一、创建二维列表
方法一:
这种方法不推荐,因为内部嵌套的列表不是三个独立的列表,而是对同一个列表的三次引用(内层共用一个存储地址,所以改变其中一个其他两个也会改变)。
方法二:
for循环创建。
方法三:
列表推导式创建。
eg1:
二、列表推导式
1.添加一个用于筛选的if分句
[expression for target in iterable if condition]
eg1:
eg2:
2.两层for语句
eg1:列表推导式
eg2:普通嵌套
eg2:
eg2.2
eg3:两次循环,两次判断
3.1
_ = [ ] # 某个变量是临时的或无关紧要的用"_"表示
但 _var、_var、var、var,都有各自的特殊含义。
三、去除列表相同元素
nums=[1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 45, 56, 78, 78, 99]
b=[]
for i in nums:
if i in b:
continue
else:
b.append(i)
print(b)
课后题:
- 请使用列表推导式创建一个 4 * 5 的二维列表,并将每个元素初始化为数字 8。
4 * 5 就是 4 行 5 列,是内层嵌套列表包含 5 个元素,外层列表包含 4 个嵌套列表
代码一:
>>> s = [[8] * 5 for i in range(4)]
>>> s
[[8, 8, 8, 8, 8], [8, 8, 8, 8, 8], [8, 8, 8, 8, 8], [8, 8, 8, 8, 8]]
代码二:
A=[]
for i in range(4):
A.append([])
for j in range(5):
A[i].append(8)
print(A)
代码三:
A=[]
A=[8]*4
for i in range(4):
A[i]=[8]*5
print(A)
- 请将下面 matrix 矩阵反向展开,即使得最终的结果为 [9, 8, 7, 6, 5, 4, 3, 2, 1]。
>>> matrix = [[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]]
答案代码:
>>> flatten = [col for row in matrix for col in row][::-1]
>>> flatten
[9, 8, 7, 6, 5, 4, 3, 2, 1]
代码二:
B=[each for i in matrix for each in i]
B.reverse()
print(B)
- 鱼C-T恤总共提供了有 2 种颜色(“BLACK”, “WHITE”)和 10 个码数(“WS”, “WM”, “WL”, “S”, “M”, “L”, “XL”, “2XL”, “3XL”, “4XL”)的选择,请使用列表推导式统计所有颜色和尺码的组合(要求将每个组合使用一个内嵌的列表包含起来,如下所示)。
>>> colors = ["BLACK", "WHITE"]
>>> sizes = ["WS", "WM", "WL", "S", "M", "L", "XL", "2XL", "3XL", "4XL"]
>>>
>>> result = [[color, size] for color in colors for size in sizes]
>>>
>>> result
[['BLACK', 'WS'], ['BLACK', 'WM'], ['BLACK', 'WL'], ['BLACK', 'S'], ['BLACK', 'M'], ['BLACK', 'L'], ['BLACK', 'XL'], ['BLACK', '2XL'], ['BLACK', '3XL'], ['BLACK', '4XL'], ['WHITE', 'WS'], ['WHITE', 'WM'], ['WHITE', 'WL'], ['WHITE', 'S'], ['WHITE', 'M'], ['WHITE', 'L'], ['WHITE', 'XL'], ['WHITE', '2XL'], ['WHITE', '3XL'], ['WHITE', '4XL']]
代码一:
for i in range(len(colors)):
for j in range(len(sizes)):
result.append([])
result[num].append(colors[i])
result[num].append(sizes[j])
num+=1
print(result)