写Pythonic的代码
写Pythonic的代码,下面的排序都是非常常见的日常使用场景,我们要用Pythonic的方式来使用它们!
1.循环遍历数字的范围
foriin[0,1,2,3,4,5]:
printi**2
更好的方式(看上去更好):
foriinrange(6):
printi**2
在这次循环中发生了什么?
range在内存中创建一个列表然后for循环遍历这个列表。
两种方式都是在内存中创建6个整数然后迭代每个数字,将它们二次方然后答应出来。所以上面两个循环是使用了完全相同的方式做了相同的事情!
Pythonic方式:使用xrange()
#Python2.x
foriinxrange(6):
printi**2
#Python3.x
foriinrange(6):
printi**2
什么是xrange?
Xrange是一个lazy方式求值的序列对象。
xrange通过范围(列表)创建一个迭代器并且每次使用只会产生一个数字,因此比上面的方法消耗更少的内存。
2.循环遍历一个集合
colours=['red','green','blue','yellow']
foriinrange(len(colours)):
printcolours[i]
Pythonic方式
forcolourincolours:
printcolour
3.遍历一个集合和它的索引
foriinrange(len(colours)):
printi,'-->',colours[i]
Pythonic方式:使用enumerate()
fori,colourinenumerate(colours):
printi,'-->',colour
4.反向遍历
foriinrange(len(colours),-1,-1,-1):
printcolours[i]
Pythonic方式:使用reversed()
forcolourinreversed(colours):
printcolour
5.有序遍历
Pythonic方式:使用sorted()
forcolourinsorted(colours):
printcolour
有序反向遍历
只需要在sorted方法的参数中添加reverse=True。
Pythonic方式
forcolourinsorted(colours,reverse=True):
printcolour
6.遍历两个集合
names=['a','b','c']
colours=['red','green','blue','yellow']
n=min(len(colours),len(names))
foriinrange(n):
printnames[i],'-->',colours[i]
更好的方法
forname,colourinzip(names,colours):
printname,'-->',colour
zip在内存中创建由元组组成的第三个列表,其中每一个元素都是带有指向原始数据指针的独立对象。换句话说,它需要比原来两个列表的总和还要使用更多的内存。
最重要的是”这本来就不是比例决定的”。
Pythonic方式:使用izip()
fromitertoolsimportizip
forname,colourinizip(names,colours):
printname,'-->',colour
对于较小的列表,zip是比较快的,但是如果你的列表有数百万的数据,那么最要使用izip,应为只有izip会在需要的时候优先使用迭代器。
Python培训、Python培训班、Python培训机构,就选光环大数据!
还不够过瘾?想学习更多?点击 http://hadoop.aura.cn/python/ 进行Python学习!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服!