2013-06-18 3 views
1

мне нужно 20 пустых списков с буквами от а до t.My кода прямо сейчас:Создание 20 пустых списков с петлей для

list_a = [] 
    list_b = [] 
    list_c = [] 
    ... 

создает мне это:

list_a[] 
    list_b[] 
    list_c[] 
    ... 

я могу сделать это с простой для петли как-то ?? Это то, что я имею прямо сейчас. Я могу цикл буквы от а до т и распечатать их

for i in range(ord('a'), ord('t') +1): 
     print i 

выход:

a 
    b 
    c 
    d 
    e 
    ... 

и так далее ...

мне нужна для этого сценария я wrote.I есть 2 пустые списки для testing.It работает отлично .Но теперь мне нужно играть с 20 списков

from os import system 

    list_a = [] 
    list_b = [] 
    list_c = [1, 2, 3, 4, 5] 


while True: 
    system("clear") 

    print "\nList A ---> ", list_a 
    print "List B ---> ", list_b 
    print "List C ---> ", list_c 

    item = input ("\n?> ") 

    place = [list_a, list_b, list_c] 
    place_name = ["List A", "List B", "List C"] 

    for i ,a in zip(place, place_name): 
     if item in i: 
      print "\nItem", item, "--->", a 
      print "\n\n1) List A" 
      print "2) List B" 
      print "3) List C\n" 

      target = input("move to ---> ") 
      target = target - 1 
      target = place[target] 

      i.remove(item) 
      target.append(item) 

      print "\nItem moved" 

      break 

    raw_input() 
+2

Вместо создания 20 различных переменных вы должны использовать список списков (или dict of lists). –

ответ

5

Используйте Другой подход:

mylist = {letter:[] for letter in "abcdefghijklmnopqrst"} 

Теперь вы можете получить доступ к mylist["a"] через mylist["t"]

0

Вы можете составить список списков, как этот my_list = [[] for i in range (20)].

Если вы хотите использовать для цикла, то есть не используя удивительный список постижение питона, то вы можете сделать это следующим образом:

my_list = [] 
for i in range (20): 
    my_list.append ([]) 
1

Использование locals()function

>>> names = locals() 
>>> for i in xrange(ord('c'), ord('t')+1): 
>>> names['list_%c' % i] = [] 

>>> list_k 
    [] 
1

Вы можете используйте exec для интерпретации сгенерированного кода.

for i in xrange(ord('a'),ord('t')+1): 
    exec("list_%c=[]" % i) 
print locals() 

Экспресс не должен быть чрезмерным, но здесь он, похоже, подходит.

Смежные вопросы