Смотря, чтобы вернуть все возможные броски двух кубиков. Возвращаемое значение представляет собой список, который содержит кортежи - PullRequest
1 голос
/ 03 октября 2019

В настоящее время я пытаюсь понять, как совместить два цикла for, прежде чем использовать какие-либо циклы понимания. Моя задача - вернуть список каждой комбинации в виде кортежа, вместо этого я получаю список из 6 списков, когда мне нужен список из 36 комбинаций.

Я попытался перебрать два диапазона.

def build_roll_permutations():
  dice = []
  for i in range(1,7):
    dicee = []
    for j in range(1,7):
      dicee.append((i,j))
    dice.append(dicee)
  return dice

ожидаемые результаты:

[(1,1),(1,2)(1,3)...etc]

мои результаты:

[[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6)], [(2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6)], [(3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6)], [(4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6)], [(5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6)], [(6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]]

Ответы [ 2 ]

5 голосов
/ 03 октября 2019

Просто избавьтесь от dicee и добавьте непосредственно к dice.

def build_roll_permutations():
  dice = []
  for i in range(1,7):
    for j in range(1,7):
      dice.append((i,j))
  return dice

Обратите внимание, что вы можете сделать это с помощью простого понимания списка

def build_roll_permuatations():
    return [(i,j) for i in range(1,7) for j in range(1,7)]

или itertools.product(поскольку это фактически продукт, а не перестановка):

def build_rolls():
    return list(product(range(1,7), repeat=2))
2 голосов
/ 03 октября 2019

Использовать удлинить вместо добавления при изменении dice:

def build_roll_permutations():
    dice = []
    for i in range(1, 7):
        dicee = []
        for j in range(1, 7):
            dicee.append((i, j))
        dice.extend(dicee)  # line to fix
    return dice


print(build_roll_permutations())

Вывод

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...