二维列表
二维列表(也常被称为矩阵形式的列表)是列表中嵌套列表的结构,即外层列表的每个元素又是一个内层列表。
1、 直接定义二维列表
语法格式
listname = [[元素11,元素12,元素13,..., 元素1n],
[元素21,元素22,元素23,..., 元素2n],
.....,
[元素n1,元素n2,元素n3,..., 元素nn]
]
'''
【参数说明】
listname:生成列表的名字
[元素11,元素12,元素13,..., 元素1n]:表示二维列表的第一行
[元素21,元素22,元素23,..., 元素2n]:表示二维列表的第二行
'''
【示例】
# 定义一个嵌套的列表
my_list = [[1, 2, 3], [4, 5, 6]]
#输出
print(my_list) # [[1, 2, 3], [4, 5, 6]]
print(type(my_list)) # <class 'list'>
print(my_list[0][0]) # 1
#01、序列输出列表中的元素
for i in my_list:
for j in i:
print(j,end=' ')
print()
#02、索引遍历列表输出列表中的元素
for i in range(len(my_list)):
for j in range(len(my_list[i])):
print(my_list[i][j],end=' ')
print()
#03、使用解包输出列表中的元素
for i in my_list:
print(*i)
#04、使用列表推导式输出列表中的元素
[print(*i) for i in my_list]
'''
【输出列表】
1 2 3
4 5 6
'''
2、for循环创建
使用for循环创建二维列表,可以根据二维列表的特点一个一个添加或者把一行做成一个列表直接添加
2.1 单个元素添加
语法格式
arr = [] #创建空列表
while 条件1 或 for i in 序列: #确定二维列表的行
arr.append([]) #在空列表中再添加一个空列表
while 条件1 或 for j in 序列: #确定二维列表的列
arr[i].append(元素) #尾内层列表添加元素
【示例】:创建一个包含4行5列的二位列表
#01单个元素添加
arr = [] #创建一个空列表
for i in range(4):
arr.append([]) #在空列表中再添加一个空列表
for j in range(5):
arr[i].append(j) #尾内层列表添加元素
#print(arr)
#输出列表里面的元素
for i in arr:
print(*i)
'''
【样例输出】
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
'''
2.2 单个列表添加(推荐)
语法格式
arr = [] #创建空列表
while 条件1 或 for i in 序列: #确定二维列表的行
arr.append([每一行的所有元素]) #在空列表中再添加一个有元素的列表
【示例】:创建一个包含4行5列的二位列表
#02整个列表添加(推荐)
arr = []
for i in range(4):
arr.append([int(i) for i in range(5)])
#输出列表里面的元素
for i in arr:
print(*i)
'''
【样例输出】
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
'''
3、使用列表推导式创建
二维列表推导式就是一种简洁高效地创建或操作二维列表的方式,通过特定的表达式和循环逻辑来生成符合需求的二维列表结构。外层的循环控制生成二维列表中的每一行(内层列表),内层的循环及表达式则用于确定每一行中的元素内容
3.1 生成二维列表
语法格式
newlist = [[expression for item in iterable] for sub_item in sub_iterable]
newlist = [Expression for item in iterable]
'''
【参数说明】
newlist:生成列表的名字
外层的循环控制生成二维列表中的每一行(内层列表)--行
内层的循环及表达式则用于确定每一行中的元素内容 --列
'''
【示例1】:生成新列表
#推导生成4行5列列表
arr = [[j for j in range(5)] for i in range(4)]
#输出列表里面的元素
print(*arr, sep='\n')
'''
【样例输出】
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
'''
【示例2】:对已有二维列表进行元素转换
my_list = [[1, 2], [3, 4]]
my_list = [[element * 2 for element in row] for row in my_list]
print(*my_list,sep='\n')
'''
【样例输出】
[2, 4]
[6, 8]
'''
3.2 带有if的二维列表推导式
语法格式
newlist = [[expression for item in iterable if condition] for sub_item in sub_iterable if outer_condition]
'''
既可以在内层循环中添加条件判断来筛选符合要求的元素填充到每行,
也可以在外层循环添加条件判断来决定是否生成某一行。
'''
【示例】创建一个 5×5 的二维列表,只保留每行中大于 2 的元素
my_list = [[i + j for j in range(5) if i + j > 2] for i in range(5) if i > 0]
print(*my_list, sep='\n')
'''
【样例输出】
[3, 4, 5]
[3, 4, 5, 6]
[3, 4, 5, 6, 7]
[4, 5, 6, 7, 8]
'''
相关精彩链接
领取专属 10元无门槛券
私享最新 技术干货