前言

Python中一般由列表代替数组,列表也有一维列表和二维列表之分,本文介绍如何创建列表,创建方法分为具体创建和批量创建,具体创建方法如下。Python版本为3.6。

具体创建

list0 = [11, 22, 33, 44]
print(list0)
multiList0 = [[11, 22], [33, 44]]
print(multiList0)

批量创建

一维列表

# 1.初始化递增的列表:
list1 = list(range(1, 11))
print(list1)
# [1,2,...,10]

# 2.初始化每项为0的一维列表:
list2 = [0] * 5
print(list2)
# [0,0,0,0,0]

# 3.初始化固定值的一维列表:
initVal = 1
listLen = 5
list3 = [initVal for col in range(listLen)]
# 同list3 = [initVal for i in range(listLen)]
print(list3)
# [1,1,1,1,1]
list4 = [initVal] * listLen
print(list4)
# [1,1,1,1,1]

二维列表

# 4.初始化一个3x5每项为0(固定值)的列表(推荐使用):
multiList1 = [[0 for col in range(5)] for row in range(3)]
print(multiList1)

# 5.初始化一个3x5每项为0(固定值)的列表
multiList2 = [[0] * 5 for row in range(3)]
print(multiList2)

补充

# 根据方法2,批量创建二维列表时,是否可以这样做呢:
# multiList = [[0] * 5] * 3
# 其实,这样做是不对的,因为[0] * 5是一个一维列表的对象,*3只是把对象的引用复制了3次。
# 比如,修改multi[0][0]:
multiList3 = [[0] * 5] * 3
multiList3[0][0] = 'Hello'
print(multiList3)
# 输出结果:
# [['Hello', 0, 0, 0, 0], ['Hello', 0, 0, 0, 0], ['Hello', 0, 0, 0, 0]]
# 修改了multi[0][0],却把multi[1][0],multi[2][0]也修改了。这不是想要的结果。

# 但是如下写法是正确的:
multiList4 = [[0] * 5 for row in range(3)]
multiList4[0][0] = 'Hello'
print(multiList4)
# 输出结果:
# [['Hello', 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
# 但是,由于使用 * 的方法比较容易引起混淆导致Bug,所以还是推荐使用上面方法4,即:
multiList5 = [[0 for col in range(5)] for row in range(6)]
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐