如何使用循环在python中创建一组列表容器

Mer*_*lin 0 python arrays loops list

是否可以从另一个列表创建一组列表/数组.

L = ['a','b','c','d','e',]
Run Code Online (Sandbox Code Playgroud)

a=[]
b=[]
c=[]
d=[]
e=[]
Run Code Online (Sandbox Code Playgroud)

小智 12

可以通过一些hackery从字符串创建变量.但是,这几乎不是一个好主意.只需使用a dict,这正是没有让您的代码命名空间与(可能是用户提供的)数据集合混淆的所有令人头疼的问题.

d = {}
for name in L:
    d[name] = []
Run Code Online (Sandbox Code Playgroud)

(在Python 2.7和3.x中,由于字典理解,你可以将它写成单个表达式:{name: [] for name in L}.)

  • 无需等待2.7/3.0在单个表达式中构建字典:dict((name,[])表示L中的名称.一般来说,它更适合于命令式构建. (3认同)

MAK*_*MAK 5

这是一种方式:

>>> vars={}
>>> for x in L:
...     vars[x]=list()
... 
>>> vars
{'a': [], 'c': [], 'b': [], 'e': [], 'd': []}

>>> locals().update(vars)
>>> a
[]
>>> b
[]
Run Code Online (Sandbox Code Playgroud)

这会更新locals并添加新项目.但如果我是你,我会简单地保留这个dict名字vars.最好有明确的数据结构,而不是搞乱localsglobals.

  • @ user428862:我认为这是一个更好的主意.可以避免混乱.这样,代码中定义的变量是清晰的,并且与运行时定义的变量(即`dict`条目)分开.如果你已经有一个名为'a'的变量然后尝试动态添加'a'和其他值int`locals`怎么办?如果变量是根据输入命名的,那么您不知道将创建哪些新变量并且可能会覆盖代码中所需的变量,该怎么办? (2认同)