1 结构
在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。
variable = [变量(out_exp)for 变量(out_exp) in input_list if out_exp == 2]
变量是一个循环体,不单单只是一个变量。
2 例子
下面通过例题来对列表生成式进行深入的理解。
- 生成一个列表,列表元素分别为 [11,22,33……nn],假设n = 10。
若用一般方法实现代码如下:
若用列表生成式:
(2)生成一个m行n列数组
dp = [[0 for _ in range(n)] for _ in range(m)]
[0 for i in range(4)] #[0,0,0,0]
dp = [[0 for _ in range(2)] for _ in range(4)] #[0 for _ in range(2)]生成[0,0],将其作为一个循环体,再循环4次
[[0, 0], [0, 0], [0, 0], [0, 0]]
3 列表切片
result[::-1]
表示从列表的最后一个元素开始,以逆序方式遍历整个列表,并返回一个除了倒序排列之外,列表切片还可以进行多种典型操作。以下是一些常见的列表切片用法:
-
切片列表中的一部分元素:
list[start:end]
:从索引start
(包含)到索引end
(不包含)的元素。list[start:]
:从索引start
(包含)到列表末尾的所有元素。list[:end]
:从列表开头到索引end
(不包含)的所有元素。list[:]
:整个列表的副本,等同于list
。
-
以指定的步长切片列表中的元素:
list[start:end:step]
:从索引start
(包含)到索引end
(不包含)的元素,并按照步长step
进行遍历。
-
利用负数索引进行倒序切片:
list[::-1]
:从列表的最后一个元素开始,以逆序方式遍历整个列表。
-
复制列表并创建新的列表对象:
new_list = list[:]
:使用切片操作来复制列表,生成一个全新的列表对象。
-
切片赋值:可以通过切片将新的元素值分配给指定位置的切片部分,用以修改列表中的元素。