python перебирает несколько списков и возвращает случайный выбор

import random
def iterate_thru_list():
   i = 0  
   L1 = [1,2,3,4,5,6,7,8,9]
   L2=['a','b','c','d','e','f','g','h','i']
   L3= ['A','B','C','D','E','F','G','H','I']
   random.shuffle(L1)
   random.shuffle(L2)
   random.shuffle(L3)


   print ("List:")
   while i <= 5:
      for x, y, z in [(x,y,z) for x in L1 for y in L2 for z in L3]:
         print(x,y,z)
   i = i + 1

Я хочу перебирать отдельные списки, возвращая случайно выбранную цифру или букву из каждого, и возвращать «набор» в этом случае из трех уникальных букв или цифр. Осторожно, цикл while не работает - он повторяется до тех пор, пока не вернет все комбинации, чего я тоже не понимаю. Могу ли я использовать random.choice(L1 или L2 или L3) для возврата x, y и z? Есть ли другой более простой способ вернуть случайный выбор из нескольких списков? Спасибо за помощь


person user1478335    schedule 30.01.2013    source источник
comment
Строка i = i + 1 должна иметь отступ.   -  person deadly    schedule 30.01.2013


Ответы (1)


Что-то типа?

L1 = [1,2,3,4,5,6,7,8,9]
L2 = ['a','b','c','d','e','f','g','h','i']
L3 = ['A','B','C','D','E','F','G','H','I']

from random import choice

for i in range(5):
    print list(map(choice, (L1, L2, L3)))

[4, 'h', 'A']
[7, 'b', 'G']
[3, 'c', 'C']
[6, 'f', 'H']
[5, 'b', 'A']
person Jon Clements♦    schedule 30.01.2013
comment
Блестящий. Мне пришлось поместить оператор списка и т. Д. В круглые скобки, которые тогда работали отлично. У меня проблемы с картой, которую я еще не полностью понимаю. Спасибо - person user1478335; 30.01.2013
comment
@user1478335 user1478335 ааа, хороший момент - я запустил это в версии 2.7 и не забыл добавить list, но не () для печати - ура :) - person Jon Clements♦; 30.01.2013
comment
Хорошо, это работает, даже если списки разного размера. Реально помогло! - person Kostas Demiris; 10.11.2014