美文网首页
Python基础学习----切片、迭代、列表生成式

Python基础学习----切片、迭代、列表生成式

作者: 小小看护 | 来源:发表于2017-10-24 14:55 被阅读6次

切片

通常我们取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']

注:文章是在廖雪峰大大的网站学习后写下的学习摘要。

相关文章

网友评论

      本文标题:Python基础学习----切片、迭代、列表生成式

      本文链接:https://www.haomeiwen.com/subject/axztpxtx.html