我想知道,我怎么能缩短这个:
test = [1, 2, 3]
test[0] = [1, 2, 3]
test[1] = [1, 2, 3]
test[2] = [1, 2, 3]
我试过这样的事情:
test = [1[1, 2, 3], 2 [1, 2, 3], 3[1, 2, 3]]
#or
test = [1 = [1, 2, 3], 2 = [1, 2, 3], 3 = [1, 2, 3]] #I know this is dumb, but at least I tried...
但它没有发挥作用:|
这只是我的愚蠢和尝试无法正常工作的东西,还是有一个适当的语法,我不知道?
答案 0 :(得分:2)
最简单的方法是
test = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
但是,如果您想要创建更多数量的列表,那么您可能希望使用list comprehension,就像这样
test = [[1, 2, 3] for i in range(100)]
这将创建一个包含100个子列表的列表。列表理解是创建一个新列表,它可以像这样理解
test = []
for i in range(100):
test.append([1, 2, 3])
注意:您可以简单地使用list.append
来代替test[0] = ...
test = []
test.append([1, 2, 3])
...
如果您查看语言definition of list,
list_display ::= "[" [expression_list | list_comprehension] "]"
因此,可以使用列表推导或表达式列表构建列表。如果我们看到expression list,
expression_list ::= expression ( "," expression )* [","]
它只是一个逗号分隔的一个或多个表达式。
在你的情况下,
1[1, 2, 3], 2[1, 2, 3] ...
不是有效的表达式,因为1[1, 2, 3]
在Python中没有意义。此外,
1 = [1, 2, 3]
表示您要将[1, 2, 3]
分配给1
,这也不是有效的表达式。这就是为什么你的尝试不起作用的原因。
答案 1 :(得分:1)
您的代码:test = [1 = [1, 2, 3], 2 = [1, 2, 3], 3 = [1, 2, 3]]
非常接近。你可以使用字典来做到这一点:
test = {1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2, 3]}
现在,要调用测试1,只需使用:
test[1]
或者,您可以使用词典理解:
test = {i: [1, 2, 3] for i in range(3)}
答案 2 :(得分:0)
这是列表理解:
test = [[1, 2, 3] for i in range(3)]