Как использовать цикл для создания группы контейнеров списка в Python - PullRequest
0 голосов
/ 08 апреля 2011

Можно ли создать группу из списка / массива из другого списка.

Иметь

L = ['a','b','c','d','e',]

хотелось бы

a=[]
b=[]
c=[]
d=[]
e=[]

Ответы [ 2 ]

13 голосов
/ 08 апреля 2011

Вы могли бы , с некоторой хакерской атакой, создавать переменные из строк. Тем не менее, это почти никогда не хорошая идея. Просто используйте dict, что точно так же, как и без головной боли, возникающей из-за того, что вы путаете пространство имен вашего кода с набором данных (возможно, предоставленных пользователем).

d = {}
for name in L:
    d[name] = []

(В Python 2.7 и 3.x вы можете записать это как одно выражение благодаря словарному пониманию: {name: [] for name in L}.)

5 голосов
/ 08 апреля 2011

Вот один из способов:

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

>>> locals().update(vars)
>>> a
[]
>>> b
[]

Это обновляет locals и добавляет новые предметы. Но я бы просто оставил dict по имени vars на вашем месте. Лучше иметь явные структуры данных, чем связываться с locals или globals.

...