1.生成列表
使用列表前必须先生成列表。
1.1使用运算符[ ]生成列表
在运算符[ ]中以逗号隔开各个元素会生成包含这些元素的新列表。另外,如果[ ]中没有元素就会生成空列表
示例
>>> list01 = []
>>> list01
[]
>>> list02 = [1, 2, 3]
>>> list02
[1, 2, 3]
>>> list03 = ['A', 'B', 'C']
>>> list03
['A', 'B', 'C']
1.2使用list函数生成列表
使用内置函数list可以生成包含各种类型对象(字符串和元组等)的列表
在不传递实参的情况下调用list()会生成空列表
示例
>>> list05 = list() # [] 空列表
>>> list05
[]
>>> list06 = list('ABC') # 由字符串的各个字符生成
>>> list06
['A', 'B', 'C']
>>> list07 = list([1, 2, 3]) # 由列表生成
>>> list07
[1, 2, 3]
>>> list08 = list((1, 2, 3)) # 由元组生成
>>> list08
[1, 2, 3]
>>> list09 = list({1, 2, 3}) # 由集合生成
>>> list09
[1, 2, 3]
>>> list10 = list(range(7)) # 用list函数转换range函数生成数列(可迭代对象)
>>> list10
[0, 1, 2, 3, 4, 5, 6]
>>> list11 = list(range(3, 8))
>>> list11
[3, 4, 5, 6, 7]
>>> list12 = list(range(3, 13, 2))
>>> list12
[3, 5, 7, 9, 11]
1.3指定元素总数生成列表
可以通过关键词 [None] 生成“元素总数确定,但元素的值不确定”的列表
列表[None]只有一个元素None,重复n次[None]后可以生成一个元素总数为n且所有元素都是None的列表。元素总数个数为5时生成的列表如下:
>>> list13 = [None] * 5 # 生成一个元素总数为5且元素都为空的列表
>>> list13
[None, None, None, None, None]
1.4for循环生成列表
生成空列表,然后使用append方法逐一添加元素
x = []
x.append(1)
x.append(2)
x.append(3)
x.append(4)
x.append(5)
x.append(6)
x.append(7)
print(x)
使用for语句实现
x = []
for i in range(1, 8):
x.append(i)
print(x)
将range函数返回的数列(可迭代对象)转换成列表
x = list(range(1, 8))
print(x)
2. 列表解析式
在实际编程中,列表解析式比较常用
2.1列表解析式形式1
[表达式 for 元素 in 可迭代对象] # 列表解析式(形式1)
示例:
生成列表[1, 2, 3, 4, 5, 6, 7]
>>> x = [n for n in range (1, 8)]
>>> x
[1, 2, 3, 4, 5, 6, 7]
列表生成过程
生成元素值为1-7各数的平方的列表
>>> x = [n * n for n in range (1, 8)]
>>> x
[1, 4, 9, 16, 25, 36, 49]
生成一个字符串列表,元素的奇数与‘+’拼接,偶数与‘-’拼接的字符串,如‘1+’、‘2-’、‘3+’、‘4-’等
>>> x = [f'{n}{"+" if n % 2 == 1 else "-"} ' for n in range(1, 8) ]
>>> x
['1+ ', '2- ', '3+ ', '4- ', '5+ ', '6- ', '7+ ']
2.2列表解析式形式2
[表达式 for 元素 in 可迭代对象 if 判断表达式] # 列表解析式(形式2)
调用这种形式的列表解析式后,程序仅在for语句循环中的判断表达式成立时取出元素
示例:
生成仅由1-7中的偶数构成的列表
>>> x = [n for n in range(1, 8) if n % 2 ==0]
>>> x
[2, 4, 6]
列表生成过程
2.3嵌套的解析式
for语句一般可以嵌套,解析式的for语句也可以嵌套
使用列表解析式生成列表(嵌套的for)
示例:
>>> x = [i * 10 + j for i in range(1,3) for j in range(1, 4)]
>>> x
[11, 12, 13, 21, 22, 23]
列表生成过程
使用嵌套的列表解析式生成二维列表
示例
>>> table = [[ i * 10 + j for i in range(1,3)] for j in range(1, 4)]
>>> table
[[11, 21], [12, 22], [13, 23]]
列表生成过程
使用嵌套的列表解析式生成单位矩阵
>>> im = [ [1 if i == j else 0 for i in range(n)] for j in range(n)]
>>> im
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
文章出处登录后可见!
已经登录?立即刷新