首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次创建多个空列表

一次创建多个空列表
EN

Stack Overflow用户
提问于 2016-12-12 12:14:17
回答 3查看 801关注 0票数 1

我想简明扼要地做以下几点:

代码语言:javascript
复制
n = 3
lst1 = [[] for _ in range(n)]
lst2 = [[] for _ in range(n)]
lst3 = [[] for _ in range(n)]

基本上生成一些相同大小的空列表。

我在找这条单线。我尝试使用zip和各种itertools,但我必须承认这组特性是我与Python的薄弱环节之一。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-12 12:20:26

您也可以通过额外的一层列表理解或生成器表达式来实现同样的目标,然后将其解压缩为变量:

代码语言:javascript
复制
>>> n = 3
>>> lst1, lst2, lst3 = ([[] for _ in range(n)] for _ in range(3))
>>> lst1
[[], [], []]
票数 3
EN

Stack Overflow用户

发布于 2016-12-12 12:25:34

与其将列表存储在不同的变量中,我建议将所有列表包装在单个列表中。您的代码应该如下所示:

代码语言:javascript
复制
>>> num_of_list, size_of_list = 5, 3
>>> my_list = [[[] for _ in range(size_of_list)] for _ in range(num_of_list)]

my_list持有的值为:

代码语言:javascript
复制
[
   [[], [], []], 
   [[], [], []], 
   [[], [], []], 
   [[], [], []], 
   [[], [], []]
] 

对于访问每个子列表,您可以简单地将索引用作:

代码语言:javascript
复制
>>> my_list[0]
[[], [], []]

>>> my_list[1]
[[], [], []]

如果必须将值存储在单独的变量中,则可以将主列表的内容解压缩为单个变量,如下所示:

代码语言:javascript
复制
list1, list2, list3, list4, list5 = my_list
票数 3
EN

Stack Overflow用户

发布于 2016-12-12 15:23:47

代码语言:javascript
复制
n = 3
for i in range(1, n+1):
    exec("lst%s = [[] for _ in range(%s)]" % (i, n))

基于To convert string to variable name

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41100719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档