- A+
在我看来,基本上可以不负责任地认为,Python 可以做任何事情。无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发、桌面程序开发还是科学计算、图像处理,Python都可以胜任。
对新学习Python的小伙伴来说,既感受到了短代码的开心,也更愿意用到一些简短的Python写法,下面是我使用Python过程总收集的一些技巧,希望对你有所帮助。
1。列表推导
你有一个列表:包= [ 1, 2, 3,4, 5 ]
现在,您希望使所有元素都加倍,并使其看起来像:[ 2, 4, 6,8, 10 ]
大多数初学者,根据以前语言的经验,可能会这样做。
包= [ 1, 2, 3,4, 5 ]
我在射程内(莱恩(袋)):
袋子[袋子] [我] * 2
但还有更好的办法:
袋= [元* 2元包]
很简单吧?这称为Python的列表推导。
点击Trey Hunner的教程[ 1 ]看到更多关于表扣。
2。遍历列表
继续,或者上面的列表。
如果你可以尽量避免这样做:
包= [ 1, 2, 3,4, 5 ]
我在射程内(莱恩(袋)):
印刷品(袋[我])
应该用这个代替:
包= [ 1, 2, 3,4, 5 ]
我在袋子里:
印刷(I)
如果x是一个列表,您可以迭代它的元素。在大多数情况下,不需要元素的索引,但是如果不需要这样做,就使用枚举函数。它看起来像底部:
包= [ 1, 2, 3,4, 5 ]
用于索引,枚举中的元素(包):
打印(索引,元素)
这很简单。
三.元的互换性
如果你从java或C,Python,你可以用这个:
= 5
B = 10
#交换A和B
TMP =一
A = B
B = TMP
但是Python提供了一种更加自然和更好的方法!
= 5
B = 10
#交换A和B
a,b = b,a
它很漂亮,不是吗?
4。初始化列表
如果你想要一个10个整数和0个整数的列表,你可以先考虑一下:
=袋
在范围(10)_:
Bag.append(0)
改变方式:
包= [ 0 ] * 10
看,多么优雅。
注意:如果您的列表包含一个列表,这将生成一个浅拷贝。
例如:
bag_of_bags = [ [ 0 ] [ 5 ] * # [ 0 ]、[ 0 ]、[ 0 ]、[ 0 ]、[ 0 ] ]
bag_of_bags [ 0 ] [ 0 ] = 1 # [ [ 1 ]、[ 1 ]、[ 1 ]、[ 1 ]、[ 1 ] ]
哎呀!所有的列表都变了,我们只想更改第一个列表。
换一个:
bag_of_bags = [ [ 0 ]为_范围(5)]
# [ [ 0 ]、[ 0 ]、[ 0 ]、[ 0 ]、[ 0 ] ]
bag_of_bags [ 0 ] [ 0 ] = 1
# [ [ 1 ]、[ 0 ]、[ 0 ]、[ 0 ]、[ 0 ] ]
同时,记住:
“过早的优化是万恶之源”
问问自己,有必要初始化一个列表吗?
5。结构串
您通常需要打印字符串。如果有很多变量,请避免以下内容:
名字=“雷蒙德”
年龄= 22
born_in =“奥克兰,CA”
字符串“你好,我的名字叫“+姓名+“我# 39;M”+ STR(年龄)+“年”+“+”+“”。
打印(字符串)
嗯,看起来有多乱?你可以用优美简洁的方式替换它。格式。
用这种方法做。
名字=“雷蒙德”
年龄= 22
born_in =“奥克兰,CA”
字符串“你好,我的名字是{ 0 },我# 39;M { 1 }岁。
打印(字符串)
更好的!
6。返回
Python允许你在一个函数中返回多个元素,这使得生活更容易。但在拆元组时,这种合格的常见错误:
DEF二进制:
返回0, 1
结果=二进制
零=结果[ 0 ]
一个结果[ 1 ]
没有必要,你可以完全改变它。
DEF二进制:
返回0, 1
零,一=二进制
如果你需要的所有元素都回来了,一_下划线:
零,_ =二进制
它是如此有效!
7。参观
你也会经常写的关键,对(键,值)来为。
如果你试图访问一个关键不在的存在,你可能倾向于为了避免KeyError错误这样做。
国= { }
包= [ 2, 3, 1,2, 5, 6,7, 9, 2,7 ]
我在袋子里:
如果我在国:
国[我] = 1
其他的:
国[我] = 1
我在射程(10):
如果我在国:
打印(“计数:{ } { }。格式”(我国[我]))
其他的:
打印(“.计数:格式{ } }”(i,0))
但这是一个更好的方式来使用得到。
国= { }
包= [ 2, 3, 1,2, 5, 6,7, 9, 2,7 ]
我在袋子里:
国[我] = countr.get(I,0)+ 1
我在射程(10):
打印(“计数:{ } { }的”(。格式的我,countr.get(I,0)))
当然,你可以用setdefault。
它还使用了一种更简单、更昂贵的方法:
包= [ 2, 3, 1,2, 5, 6,7, 9, 2,7 ]
国= dict([((num,bag.count(努姆))数袋])
我在射程(10):
打印(“计数:{ } { }的”(。格式的我,countr.get(I,0)))
你也可以使用字典来推断。
国= {民:bag.count(努姆)数袋}
这两种方法很昂贵,因为每次调用计数时都会遍历它们。
8。利用图书馆
现有的图书馆只需要导入,你可以做你真正想做的事情。
或者,在前面的例子中,我们在列表中创建了许多函数计数。所以,有一个图书馆可以做这样的事情。
从集合进口计数器
包= [ 2, 3, 1,2, 5, 6,7, 9, 2,7 ]
国=计数器(袋)
我在射程(10):
打印(“计数:{ } { }。格式”(我国[我]))
使用图书馆的一些理由:
代码正确并经过测试。
他们的算法可能是最好的,所以他们跑得更快。
翻译后摘要:它们是明确的和文档友好的,您可以专注于那些尚未实现。
最后,它已经在那里了。你不需要改造轮子。
9。列表中的步骤/步骤
您可以指定起始点和停止点,如以下列表(开始:停止:步骤]。我们列出了列表中的前5个元素:
包= [ 0, 1, 2,3, 4, 5,6, 7, 8,9 ]
在包[ 5 ]元素:
打印(元)
这是切片,我们指定停止点是5,5个元素在停止之前将从列表中取出。
如果最后5个元素完成了呢?
包= [ 0, 1, 2,3, 4, 5,6, 7, 8,9 ]
对于元素袋[ 5 ]:
打印(元)
你没看到吗?5意味着从清单的最后取出5个元素。
如果你想在列表中的元素间隔上操作,你可以这样做:
包= [ 0, 1, 2,3, 4, 5,6, 7, 8,9 ]
对于指数,在枚举元素(袋):
如果索引% = 2 = 0:
打印(元)
但是你应该这样做:
包= [ 0, 1, 2,3, 4, 5,6, 7, 8,9 ]
在包[ 2 ]:元素:
打印(元)
#或范围
Bag = list (range (0,10,2))
印刷(袋)
这是清单中的步骤。列表[::2 ]意味着遍历列表并在两个步骤中同时取出一个元素。
可以使用列表:[……1 ]是一个很酷的翻转列表。
10。制表键或空格键
时间一长,混合标签和空间能够带来灾难,你会看到indentationerror:意想不到的缩进。无论您选择tab键还是空格键,您都应该在文件和项目中继续使用它。
使用空格而不是制表符的原因是所有编辑器中的制表符不一样。选项卡可以被视为2或8空间,这取决于所使用的编辑器。
在编写代码时,还可以使用空格定义制表符。通过这种方式,您可以选择为自己的选项卡使用几个空格。大多数Python用户使用4个空格。