How to create a number of empty nested lists in python
我想要一个变量,它是一个嵌套的列表,其中包含许多空列表,我可以稍后填写。看起来像是:
1
| my_variable=[[], [], [], []] |
但是,我事先不知道只在创建步骤中需要多少列表,因此我需要一个变量a来确定它。我想到了简单的my_variable=[[]]*a,但它创建了列表的副本,这不是我想要的。
我能做到:
1 2 3
| my_variable=[]
for x in range(a):
my_variable.append([]) |
但我正在寻找一个更优雅的解决方案(最好是一个线性)。有吗?
- 我认为你需要重新考虑这个问题,这似乎可以更好地为你的需要使用字典。查阅本帖
- my_variable=[[] for _ in xrange(a)]
- +1对英巴罗丝的评论…我必须转换一些Perl代码(在这里您可以随时实例化任何索引,而Python不允许这样做)。x=[],x[4]=1在Perl中工作,在python中引发错误)。不过,只要把x编成一本字典,它的工作方式也一样:x=,x[4]=1现在工作得很好。您必须对键进行排序,但它们不会单调(即,您可以拥有类似[0,3,4,7]的索引)。
- 您可能需要的东西:defaultdict(list)。
- 这是副本
试着理解
1
| lst = [[] for _ in xrange(a)] |
See below:
ZZU1
注:上面是为Python2.X.在Python3.X.,自从xrange以来
1
| lst = [[] for _ in range(a)] |
- 我一定是昏过去了,我以前没想过要理解清单。:)但是,我想知道为什么Python2.x上的xrange比range好?它们都是一样的,不是吗?
- @安迪-事实上不是。在python 2.x中,EDOCX1(返回xrange迭代器)比EDOCX1(返回列表)更快。但是,在python 3.x中,range被设置为执行xrange的操作,因此xrange 被删除。这里有一个参考:stackoverflow.com/questions/135041/…
1 2
| >>>[[] for x in range(10)] #To make a list of n different lists, do this:
[[], [], [], [], [], [], [], [], [], []] |
编辑
这将给你同样的结果,但名单不是单独的,它们只是同一个论坛的参考。
- 这将有助于说明这与[[]]*10的区别。
- 很好。我错过了。
- 考虑扩展您的答案,向询问者解释为什么这会达到期望的结果,可能会链接到文档。事实上,这只是一点点有用。
- @inspectorg4dget它的区别是:stackoverflow.com/questions/12791501/…