@lutokris

Почему мне нужно заранее объявить i для цикла?

Всем добра. У меня есть двумерный список table - [ [ a1, a2, a3, a4] ,[b1, b2, b3, b4] ,[c1, c2, c3, c4] ], который мне нужно вывести в виде:
a1 b1 c1
a2 b2 c2
a3 b3 c3
a4 b4 c4

и соответственно я пишу цикл
i =  0 
    for i in range(len(table[i])):
        for j in range(0, len(table)):
            st = table[j][i].rjust(colWidths[j])
            print(st,end=' ')
        print()

и у меня выводит в нужно виде. Но я не пойму, почему если сделать так:
for i in range(0, len(table[i]), 1):
      for j in range(0, len(table)):
            st = table[j][i].rjust(colWidths[j])
            print(st,end=' ')
      print()

то выводит ошибку TypeError: list indices must be integers or slices, not list, для условия цикла переменная i не инициализирована. Это значит если переменную i инициализировать в начальных установках цикла, то ее нельзя применять как условие цикла? И поэтому всегда нужно ее инициализировать до начала цикла?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что цикл идет от 0 до len(table[i]). А что такое i, если она не объявлена?
Если нужно просто кол-во элементов в одном списке, можно просто заменить на 0 допустим.
И получится
for i in range(0, len(table[0]), 1):

Первый ваш цикл - аналог моему, только в моем берется первый элемент из списка по индексу 0 table[0], а в вашем вместо 0 выступает переменная i, равная 0.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы