前言

最近学习python列表,不过我的那本书讲的python基础知识很薄弱,没有讲解二维列表以及多维列表如何创建。更别提增删元素等等。而我在刷牛客基础题的时候则遇到了这个问题。所以学习一下,并且以此篇加深印象。

start

我们先以创建一个二维空列表举例

#第一步先创建一个空列表(最外层列表)
message_list = []
for i in range(2):
    message_list.append([])
print(message_list)

打印结果为[[], []]
很明显创建了一个具有2个列表元素的二维列表。那么我们想要更多列表元素就增加range的范围。
那么这是二维列表,我们想要创建三维的怎么办呢?也很简单,只需要将二维列表内的每个列表元素内的元素都增加列表即可。

#第一步先创建一个空列表(最外层列表)
message_list = []
#创建二维列表
for i in range(2):
    message_list.append([])
print(message_list)
#创建三维列表
for i in range(2):
    message_list[i].append([])
print(message_list)

打印结果为:[[[]], [[]]]
很明显创建成功了,发现了没有这样依次序一直循环,无限对列表元素内的元素增加列表,无限套娃。就能生成多维列表。
总结经验就是——由外向内,无限套娃。
通过控制循环的次数决定列表元素的个数
通过控制套娃的次数就可以不断提高维度

这是一种基础的写法,便于理解这个原理,那么理解了这个原理后,我们更深入学习下一种简便的写法:python列表推导式
以及拿创建二维数组为例

message_list = [[]for i in range(2)]
print(message_list)

可以看到列表推导式更简练。不过在多维数组时候就会超过警示线
比如定义三维数组,我们看一下代码多长

message_list = [[[]for i in range(1)]for i in range(1)]
print(message_list)

可以观察到这样写不仅增加了[]的个数也增加for循环的个数

那么列表推导式除了可以构建多维列表还有其他的妙用!
比如我们创建一个从1到10的整数的平方组成的列表
常规方法为

#先定义一个空列表
number_list = []
for i in range(1,11):
    number_list.append(i**2)
print(number_list)

那么我们使用列表推导式的话就可以减少代码量

number_list = [i**2 for i in range(1,11)]
print(number_list)

列表推导式里甚至可以使用if语句,从而让我们的代码更简便
比如我们只想要创建1到10中的偶数的平方组成的列表
常规方法:

#先定义一个空列表
number_list = []
for i in range(1,11):
    if i % 2 == 0:
        number_list.append(i**2)
print(number_list)

而在列表推导式里,我们可以把if语句写在推导式内

number_list = [i**2 for i in range(1,11) if i % 2 ==0]
print(number_list)

这样同样大大简化了我们的代码行数!

___以上就是本文全部内容

总结

本人python初学者,若有不当之处恳请各位师傅指出,感谢各位师傅赐教。