1
>>> even=[i for i in range(10) if i%2==0]
>>> even
[0, 2, 4, 6, 8]
>>> even=[i+1 for i in range(10) if i%2==0] --------------由此可看出 先执行for语句,再执行if语句 最后 才执行左侧的i+1表达式
>>> even
[1, 3, 5, 7, 9]
-------------找出首字母为F的单词
>>> words=["Great","Fell","Apple","Fly"]
>>> Fwords=[w for w in words if w[0]=="F"]
>>> Fwords
['Fell', 'Fly']
-------------将二维列表降为一维列表
>>> matrix=[[1,2,3],[4,5,6],[7,8,9]]
>>> flatten=[col for row in matrix for col in row]
>>> flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
举例
>>> [x+y for x in "ABC" for y in "abc"]
['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc'
--------------------------------------------------------------------------
>>> p=[]
>>> for x in "ABC":
for y in "abc":
p.append(x+y)
>>> p
['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc']
------------------------终极语法
>>> [[x,y] for x in range(10) if x%2==0 for y in range(10) if y%3==0]
[[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]]
>>> _=[]
>>> for x in range(10):
if x%2==0:
for y in range(10):
if y%3==0:
_.append([x,y])
>>> _
[[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]]
kiss 简洁胜于复杂
2 元组
列表和元组的的差别 列表【】 元组()
元组也可以不用括号 也可以通过序列下标来获取元素 元组是不可变的 所以不能通过下标来修改对象 可以通过切片来获取元素
元组只支持 count 和 index方法
>>> nums=(3,5,3,6,7,9)
>>> nums.count(3)
2
>>> words=("A","B","C")
>>> words.index("C")
2
打包和解包
>>> t=(123,"ABC",3.14)
>>> t
(123, 'ABC', 3.14)
>>> x,y,z=t
>>> x
123
>>> y
'ABC'
>>> z
3.14 ------------将它们一次性赋值给三个变量名的行为 称为解包 也适用于列表
>>> s=[1,2,3]
>>> t=[4,5,6]
>>> x=(s,t)
>>> x
([1, 2, 3], [4, 5, 6])
>>> x[0][0]=0
>>> x
([0, 2, 3], [4, 5, 6]) 元组虽然是不可变的 但是元组中的元素指向一个可变的列表 那就可以修 改列表里面的内容