как создать набор вложенных списков от [0, 0] до [6, 6] без дубликатов

#python #python-3.x #list #loops #list-comprehension

Вопрос:

 Dominoes = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6],
       [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 3], [3, 4], [3, 5], [3, 6], [4, 4], [4, 5], [4, 6], [5, 5],
       [5, 6], [6, 6]]
 

Как я могу автоматизировать этот процесс?
Я пытался понять список и цикл for и цикл while в течение нескольких часов, но не мог понять этого

  • Всего 28 штук
  • Никаких дубликатов, т. е. [1, 2] == [2, 1]

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

1. Вы пробовали что-нибудь до сих пор?

2. да, я пытался понять список и цикл for и цикл while, но не смог этого понять

Ответ №1:

Вы можете основать начальный индекс внутреннего цикла на внешнем цикле

 dominoes = []
    for i in range(7):
        for j in range(i, 7):
            dominoes.append([i, j])
 

Или с пониманием списка

 dominoes = [[i, j] for i in range(7) for j in range(i, 7)]
# output: [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 3], [3, 4], [3, 5], [3, 6], [4, 4], [4, 5], [4, 6], [5, 5], [5, 6], [6, 6]]
 

Ответ №2:

Если вам нужна неповторяющаяся структура данных, вы можете использовать set(), и, поскольку ваши данные не могут быть изменены, сохраните их в виде кортежа, а не списка.

Чтобы предотвратить дублирование, вы можете добавить условие, что каждый кортеж должен соответствовать формату (i, j), где i

 dominoes = set()

for i in range(7):
    for j in range(7):
        if i <= j:
            dominoes.add((i, j))

print(dominoes)
 

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

1. спасибо, это была ценная информация для будущих практик