码迷,mamicode.com
首页 > 编程语言 > 详细

python相关高级特性的总结

时间:2020-02-12 10:28:01      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:rate   下标   语句   ==   list   就是   生成器   取值   数字   

一、切片

切片操作是对于一个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相关高级特性的总结

标签:rate   下标   语句   ==   list   就是   生成器   取值   数字   

原文地址:https://www.cnblogs.com/hj-SAMA/p/12297924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!