Как сгенерировать кортеж из цикла for?

#python #loops #tuples

#python #циклы #Кортежи

Вопрос:

 Dice_1 = [random.randint(1,7) for x in range(3)]
Dice_2 = [random.randint(1,7) for x in range(3)]

for a in Dice_1:
    print(a)
for b in Dice_2:
    print(b)
  

Я хочу, чтобы после генерации одного случайного целого числа из Dice_1 и Dice_2 оба образовывали кортеж, затем следующую пару и так далее, например (1,3) , и затем (5,7) .

Заранее спасибо

Ответ №1:

Вы можете использовать zip

 Dice_1 = [random.randint(1,7) for x in range(3)]
Dice_2 = [random.randint(1,7) for x in range(3)]

for a,b in zip(Dice_1,Dice_2):
    print((a,b))
  

Вывод:

 (1, 4)
(5, 7)
(7, 6)
  

Ответ №2:

Либо используйте zip(), либо создайте кортежи для начала:

 tups = [(random.randint(1,7), random.randint(1,7)) for _ in range(3)]
  

… кстати. это 7-сторонний штамп, довольно редкий вид.

Другим способом было бы использовать индекс и значение первого списка (через enumerate ) и индексировать во второй список:

 import random

Dice_1 = [random.randint(1,7) for x in range(3)]
Dice_2 = [random.randint(1,7) for x in range(3)]

for i,v in enumerate(Dice_1):
    print( (v,Dice_2[i]) )
  

Вывод:

 (4, 6)
(6, 7)
(3, 6)
  

Комментарии:

1. Да, настолько редко, что я не понимал, что он 7-сторонний.

2. @the_R ;o) так и думал

Ответ №3:

Простое использование zip:

 for x,y in zip(Dice_1,Dice_2):
  print((x,y))
  

Или попасть в список:

 [(x,y) for x,y in zip(Dice_1,Dice_2)]