Как напечатать кортежи подряд в порядке возрастания (1,2,3), (2,3,4) ..... (10,11,12), используя понимание - PullRequest
1 голос
/ 14 октября 2019

У меня есть вопрос, где меня просят напечатать 10 элементов, состоящих из 3 кортежей (1,2,3)(2,3,4)....(10,11,12), используя понимание.

До сих пор мне удавалось напечатать его в одном длинном кортеже (1,2,3,2,3,4,3,4,5,4,5,6....) с запятымии без скобок, разделяющих их. Подсказка в вопросе заключается в том, что в этом понимании нужна только одна часть.

Вход :

def try2():
  e = [x+a for x in range(0,10) for a in range (1,4)] 
  print (tuple(e))

try2()

Выход:

(1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7,6, 7, 8, 7, 8, 9, 8, 9, 10, 9, 10, 11, 10, 11, 12)

Ожидается:

(0,1,2), (2,3,4), (3,4,5)...... (10,11,12)

Факт:

(1, 2, 3, 2, 3,4, 3, 4, 5, 4, 5, 6, 5, 6, 7,6, 7, 8, 7, 8, 9, 8, 9, 10, 9, 10, 11, 10, 11, 12)

1 Ответ

2 голосов
/ 14 октября 2019

Вместо этого вы можете передать внутренний генератор range в конструктор tuple:

[tuple(range(x, x + 3)) for x in range(1, 11)]

Возвращает:

[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7), (6, 7, 8), (7, 8, 9), (8, 9, 10), (9, 10, 11), (10, 11, 12)]
...