切片
通常我们取list里面的元素会这样写
list = ['zhangsan','lisi','wangwu']
list[0] list[1] list[2]
取n个的话:
for i in range(3):
list[i]
但是这样用循环很麻烦,可以这样做
list[0:3] #这样取的是从0开始,往后数3个数
list[1:3] #这样取的是从1开始,往后数2个数
迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代。在Python中,迭代是通过for ... in来完成的
在Python不是都是迭代的,所以有时候需要判断是否可以迭代
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
列表生成式
列表生成式是Python中内置的非常简单却非常强大的可以用来创建list的生成式。
例如要生成list [1,2,3,4,5,6,7,8,9]
,可以用list(range(1,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]
方法二:列表生成式
[x * x for x in range(1,10)]
得出:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表生成式还有其他的用法
*在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']
举例
判断是否可以迭代,在用列表生成式
L = ['Hello', 'World', 18, 'Apple', None]
[x for x in L if isinstance(x,str) == True]
结果:
['Hello', 'World', 'Apple']
注:文章是在廖雪峰大大的网站学习后写下的学习摘要。
网友评论