所谓的列表推导式,就是指的轻量级循环创建列表
1. 基本的方式
In [9]: a = [x for x in range(4)]
In [10]: a
Out[10]: [0, 1, 2, 3]
In [11]: a = [x for x in range(1,15,2)]
In [12]: a
Out[12]: [1, 3, 5, 7, 9, 11, 13]
In [18]: a
Out[18]: [123, 123, 123, 123]
In [19]: a = ["hi" for x in range(4)]
In [20]: a
Out[20]: ['hi', 'hi', 'hi', 'hi']
2. 在循环的过程中使用if
In [13]: a = [x for x in range(1,20) if x%2==0]
In [14]: a
Out[14]: [2, 4, 6, 8, 10, 12, 14, 16, 18]
3. 2个for循环
In [21]: a = [x for x in range(0,3) for y in range(3) ]
In [22]: a
Out[22]: [0, 0, 0, 1, 1, 1, 2, 2, 2]
In [15]: a = [(x,y) for x in range(0,3) for y in range(3) ]
In [16]: a
Out[16]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
4. 3个for循环
练习
-
生成一个[[1,2,3],[4,5,6]....]的列表最大值在100以内
-
请写出一段 Python 代码实现分组一个 list 里面的元素,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]
答案
In [9]: a = [(x,y,z) for x in range(1,10,3) for y in range (x+1,x+2) for z in range(x+2,x+3)]
In [10]: a
Out[10]: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
In [11]: a = [[x,y,z] for x in range(1,10,3) for y in range (x+1,x+2) for z in range(x+2,x+3)]
In [12]: a
Out[12]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
In [22]: b= [a[x:x+3] for x in range(0,10,3)]
In [23]: b
Out[23]: [[1, 2, 3], [4, 5, 6], [7, 8, 9], []]