我开始使用python,我尝试使用一个二维列表,我开始在每个地方都用相同的变量填充。我想到了这个:
def initialize_twodlist(foo):
twod_list = []
new = []
for i in range (0, 10):
for j in range (0, 10):
new.append(foo)
twod_list.append(new)
new = []
它给出了预期的结果,但感觉像是一种变通方法。有更简单/更短/更优雅的方法吗?
Python中经常出现的一个模式是
bar = []
for item in some_iterable:
bar.append(SOME EXPRESSION)
这有助于推动列表推导式的引入,它将代码片段转换为
bar = [SOME_EXPRESSION for item in some_iterable]
这样更简短,有时也更清楚。通常,您会养成识别这些循环的习惯,并经常用推导式替换循环。
您的代码遵循此模式两次
twod_list = [] \
for i in range (0, 10): \
new = [] \ can be replaced } this too
for j in range (0, 10): } with a list /
new.append(foo) / comprehension /
twod_list.append(new) /
另一种方法是使用字典来保存二维数组。
twoD = {}
twoD[0,0] = 0
print(twoD[0,0]) # ===> prints 0
它可以保存任何1D, 2D值,并将其初始化为0或任何其他int值,使用集合。
import collections
twoD = collections.defaultdict(int)
print(twoD[0,0]) # ==> prints 0
twoD[1,1] = 1
print(twoD[1,1]) # ==> prints 1