Функция Python 3.6v range () не будет выполняться - PullRequest
0 голосов
/ 08 мая 2018
def fn():
  theList = []
  for rev in range(5, 0, -1):
    theList.append(rev)
    print(theList)

fn()

Я не понимаю, почему это не сработает? Моя цель - напечатать что-то вроде этого

[5,4,3,2,1,0]
[4,3,2,1,0]
[3,2,1,0]
[2,1,0]
[1,0]
[0]

Редактировать 1. Окей, я добавил запятую (,), но в результате это

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

Что не то, что я ищу

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы можете получить свой вывод так:

def fn():
    theList = list(range(5, -1, -1))
    for idx in range(len(theList)):
        print(theList[idx:])
fn()

Выход:

[5, 4, 3, 2, 1, 0]
[4, 3, 2, 1, 0]
[3, 2, 1, 0]
[2, 1, 0]
[1, 0]
[0]

Ваш код использует неправильный подход. По сути, ваш вывод показывает, что список изначально полон и продолжает отображать один элемент слева на каждой итерации. Ваш подход начинается с пустого списка и добавляет элемент на каждую итерацию.

Кроме того, range(5, 0, -1) - это не тот список, о котором вы думаете. Это потому, что функция диапазона игнорирует конечное значение, которое здесь равно 0.

Если бы вы сделали это list(range(5, 0, -1)), вы бы получили [5, 4, 3, 2, 1], который явно не содержит 0. Итак, чтобы получить нужный список, вам нужно будет сделать list(range(5, -1, -1)), как в коде выше.

0 голосов
/ 08 мая 2018

1) В вашей функции есть опечатка:

for rev in range(5, 0, -1):

2) вам нужно использовать ваш rev:

for rev in range(5, -1, -1):
    print(range(rev,-1,-1))
...