Превращение понимания списка в цикл for

#python #list #for-loop #nested #range

Вопрос:

Я пытаюсь настроить коды понимания списка trow=[left right for left,right in zip(trow y, y trow)] в цикл for вместо понимания списка. Я пытался выполнить это преобразование, но оно не работает. Как я смогу это сделать?

Для кода цикла:

 def PascalTriangle(n):  trow = [1]  y = [0]  for x in range(n):  print(trow)  for left,right in zip(trow y, y trow):  trow.append(left right)  return ngt;=1  PascalTriangle(6)  

Код понимания списка:

 def PascalTriangle(n):  trow = [1]  y = [0]  for x in range(n):  print(trow)  trow=[left right for left,right in zip(trow y, y trow)]  return ngt;=1  PascalTriangle(6)  

Выход:

 [1] [1, 1, 1] [1, 1, 1, 1, 2, 2, 1] [1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1] [1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 1] [1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 3, 4, 3, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 1, 1, 2, 2, 2, 3, 4, 3, 2, 3, 4, 4, 5, 7, 7, 4, 2, 3, 4, 4, 5, 7, 7, 5, 5, 7, 8, 9, 12, 14, 11, 5, 1]  

Ожидаемый Результат:

 [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 10, 10, 5, 1]  

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

1. trow.append(left right) находится на месте и возвращается None . Удалите задание

2. Я сделал это, но как я буду добавлять в trow список

3. Чтобы уточнить, что говорит @rdas, вместо trow = trow.append(...) того, чтобы просто делать trow.append(...) .

4. Я обновил проблему, я все еще не могу получить ожидаемый результат

Ответ №1:

Вы можете использовать временный список для сбора всех значений:

 def PascalTriangle(n):  trow = [1]  y = [0]   for x in range(n):  print(trow)  line = []  for left, right in zip(trow   y, y   trow):  line.append(left   right)  trow = line  return n gt;= 1   PascalTriangle(6)  

Из:

 [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 10, 10, 5, 1]