我需要一些列表,机器人列表的数量和列表的长度我不知道小修道院。列表的类型是str。我怎样才能以有效的方式做到这一点?
我试过了:
data = [[]] * number_of_needed_lists
for line in f.readlines():
columns = line.split(',')
for i, dta in enumerate(data):
data[i] = dta + [columns[i]]
但这很慢。我尝试了一个类似的结构,但有一个列表字典,结果相似。
此外,我发现了以下奇怪的行为:
a = [[]] * 5
a[0] += [1]
a
==> [[1], [1], [1], [1], [1]]
expected: [[1],[],[],[],[]]
答案 0 :(得分:2)
替换:
data = [[]] * number_of_needed_lists
使用:
data = [[] for i in range(number_of_needed_lists)]
当您使用*
运算符时,您实际上正在使用同一对象的副本(引用) - 这就是为什么,当您更改其中一个对象时 - 所有这些都改变了。
答案 1 :(得分:0)
首先,您不需要知道列表的长度,如果您想在列表中添加内容,只需使用list.append()
。
其次,您可以使用包含一组列表的列表,以便创建列表列表:
listoflists = []
for i in range(1, number_of_needed_lists):
listoflists.append((range(i), 0))