-1
my_list = ['c1','c2','c3']

无论如何,是否可以根据列表中的项目创建一定数量的新列表?

结果将是:

c1 = []
c2 = []
c3 = []
4

2 回答 2

6

您可以使用globals()

>>> my_list = ['c1','c2','c3']
>>> for x in my_list:
...     globals()[x] = []
...     
>>> c1
[]
>>> c2
[]
>>> c3
[]

但最好在这里使用字典:

>>> dic = {item : []  for item in my_list}
>>> dic
{'c2': [], 'c3': [], 'c1': []}
于 2013-06-13T22:35:23.913 回答
3

我建议不要使用列表中的名称创建新的全局变量,而是使用字典:

my_list = ['c1', 'c2', 'c3']
my_dict = {k: [] for k in my_list}

然后要访问其中一个列表,您可以使用类似my_dict['c1']or的东西my_dict['c2']

另一种解决方案是将新列表作为属性添加到某个对象或模块。例如:

lists = type('Lists', (object,), {k: [] for k in my_list})

之后,您可以使用 , 等访问您的lists.c1列表lists.c2

在我看来,这两种方法都比修改globals()or更干净locals(),它们给你的行为非常相似。

请注意,如果您使用的是 Python 2.6 或更低版本,则需要将字典推导替换为dict((k, []) for k in my_list).

于 2013-06-13T22:35:41.880 回答