Python-生成列表

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]]

猜你喜欢

转载自blog.csdn.net/aaaccc444/article/details/129178743