@Idwln

Как присвоить значение списку по индексу, если данного индекса ещё не в списке?

У меня есть список arr = [[1],[1,1],[1,2,1] и я хочу в ходе работы программы в arr[number].append(something) , где number = 3 и постоянно увеличивается(number+=1). Но компилятор не позволяет мне этого сделать и приходиться для списка в 10 элементов создавать вот такое: arr = [[1],[1,1],[1,2,1],[],[],[],[],[],[],[]]
Вопрос в том, как бы не создавать эти пустые вложенные списки, а создавать их в процессе программы?

Задание:
Создать "треугольный" массив из 10 строк и заполнить его биномиальными коэффициентами (треугольник Паскаля)

Мой код:
arr = [[1],[1,1],[1,2,1]]
    row = 4
    c = 0
    for i in range(1,8):
        for x in range(1,row + 1):
            if x == 1 or x == row:
                arr[row-1].append(1)
            else:
                number = arr[row - 2][c] + arr[row - 2][c + 1]
                arr[row - 1].append(number)
                c += 1

        c = 0
        row += 1
    pprint(arr)


Ошибка:
arr[row-1].append(1)
IndexError: list index out of range
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Используйте генератор списка:
arr = [[] for _ in range(10)]  # Получится: [[], [], [], [], [], [], [], [], [], []]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@denislysenko
data engineer
вот пример того, где решается твоя проблема:
arr = [[1],[1,1],[1,2,1]]
number = len(arr)-1
something = 'something'


#цикл для списка из 10 елементов
for i in range(number, 11): 
    number+=1
    arr.append([])
    # что-то делаем
    arr[number].append(something)
    print(arr)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы