python相关高级特性的总结
Posted hj-sama
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python相关高级特性的总结相关的知识,希望对你有一定的参考价值。
一、切片
切片操作是对于一个list和tuple取其中部分的操作,操作步骤就是在一个已初始化完成的list或tuple后加[x?x],x为任意数值,来对列表进行部分取值操作。
L=[1,2,3,4,5,6,7,8,9]
print(L[0:3])
输出
[1,2,3]
利用上述代码可以取list前三个元素,当然索引取负数也是可以的
L=[1,2,3,4,5,6,7,8,9]
print(L[-1:])
输出
[9]
我们也可以在100个数字中取偶数
L=list(range(100))
print(L[::2])
对于切片操作的三个参数,第一个为起始索引,第二个为终止索引,第三个为步长(一次取值的间隔)
二、迭代
如果给定一个list或tuple,我们可以通过for循环来遍历它,这种遍历称为迭代,在Python中通过for....in来完成的。
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
...
a
c
b
如果想迭代取值,可以用for value in d.values()
如果下标和值都取的话,可以用for k,v in d.items()
如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
三、列表生成器
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
要生成list[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11));
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:
>>> L = []
>>> for x in range(1, 11):
... L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
还可以使用两层循环,可以生成全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
以上是关于python相关高级特性的总结的主要内容,如果未能解决你的问题,请参考以下文章