在Python中动态创建列表的最佳方法是什么?
我的用户将创建任意数量的人类对象,并根据自己的喜好将其分组。(创建的组数将被跟踪)我想为他们创建的每个组创建一个列表,供以后使用。如果我不知道将有多少组,如何为每个组创建一个列表 我想到了类似以下的事情:在Python中动态创建列表的最佳方法是什么?,python,dynamic,Python,Dynamic,我的用户将创建任意数量的人类对象,并根据自己的喜好将其分组。(创建的组数将被跟踪)我想为他们创建的每个组创建一个列表,供以后使用。如果我不知道将有多少组,如何为每个组创建一个列表 我想到了类似以下的事情: for i in range(num_groups): eval('group_' + str(i) + ' = []') 这将为名为group_i的组i创建一个空列表。我已经读到eval在大多数情况下都不应该使用,所以我想知道是否有更好的方法。你考虑过吗 groups = [[]
for i in range(num_groups):
eval('group_' + str(i) + ' = []')
这将为名为group_i的组i创建一个空列表。我已经读到eval在大多数情况下都不应该使用,所以我想知道是否有更好的方法。你考虑过吗
groups = [[] for i in range(num_groups)]
而不是
for i in range(num_groups):
eval('group_' + str(i) + ' = []')
通过这种方式,您可以声明
num\u groups
列表。您可以使用列表字典,这样“group\u i”形式的每个名称都将在该字典中保留一个新列表(“group\u i”是键)。若你们想得到所有的列表,你们只需要拥有所有的键并找到相应的值就可以到达特定的列表
减容措施如下:
all_groups = {}
for i in range(num_groups):
new_group_name = "group_" + str(i)
all_groups[new_group_name] = []
以便将项目添加到特定组中
all_groups[group_name].append(item)
您可以通过访问字典的所有键来访问所有组名
all_groups.keys()
你知道列表是一件事吗?我确实知道。我不知道这会有什么帮助。我不知道如何根据列表的编号访问每个列表。@JerAnsel通过调用
groups[I]
来访问,其中I
是它的编号。我尝试了一下,收到了一个错误:生成器对象不可订阅。尽管如此,我还是接受了这个答案,谢谢@杰兰塞尔:是的,不幸的是:)我已经修改了代码,只是为了防止有人使用它。