为另一个列表中的每个项目创建一个列表

时间:2018-04-04 05:24:07

标签: python list

如何为另一个列表中的每个项目创建一个空列表(长度可变)。要创建的列表名称包含项目值。

  

['NSW','ACT','VIC']

新创建的列表

  

NSW_list []

     

ACT_list []

     

VIC_list []

2 个答案:

答案 0 :(得分:2)

我不推荐这种做法。

你可能会得到所有类型的回复,告诉你如何使用setattr和朋友 来做这件事,但实际上动态创建的变量名几乎是不变的(看看我在那里做了什么) ?)一个坏主意。

假设您已经有一个名为X_list的变量,然后您处理包含'X'的列表。你的变量将被覆盖。

此外,由于您无法事先知道将创建哪些变量名称,因此您将被迫使用getattr等动态技术来访问它们。这几乎可以保证您的代码模糊不清,难以阅读。

如果您真的想通过名称访问它们,最简单的方法是使用名称作为字典的键。这是最简单的方法。

list_dict = {}
for name in ['NSW', 'ACT', 'VIC']:
    list_dict[name+'_list'] = []

我的偏好是删除'_list'后缀,只使用列表中显示的名称。

答案 1 :(得分:-1)

您可以尝试:

L=['NSW', 'ACT', 'VIC']

empty_list=[[]]*len(L)

输出:

[[], [], []]

现在,如果你想要旧的列表,那么只需压缩它们:

print(list(zip(L,empty_list)))

输出:

[('NSW', []), ('ACT', []), ('VIC', [])]