Как получить доступ к вложенным спискам через циклы for - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь напечатать отдельные значения во вложенном списке, например: Предполагаемый вывод isInstead. Я продолжаю получать TypeError: объект 'int' не повторяется. Самое странное, что мой код работает для вложенного списка, например: Почему d


Ответы [ 3 ]

0 голосов
/ 03 ноября 2019

В качестве альтернативы предыдущему представителю, вы также можете проверить тип элемента

for sub_list in test:
  if isinstance(list, sub_list):
    for e in sub_list:
      print(e)
  else:
    print(e)

Это работает только с 2-уровневыми вложенными списками. Если ваш список вложен дальше, лучше вместо него написать рекурсивную или итеративную функцию.

0 голосов
/ 03 ноября 2019

Разобрался!

    new_list = []
    for sub_list in nested:
        if type(sub_list) == list:
            for x in sub_list:
                new_list.append(x)
        else:
            new_list.append(sub_list)
    return new_list
0 голосов
/ 03 ноября 2019

Проблема в том, что test содержит не только повторяемые типы.

Третий элемент - это int (3).

Внутренний цикл попытается выполнить:

for x in 3:

, который завершается неудачно, потому что 3 не повторяется.

Вам нужно либо проверить, является ли элемент повторяемым, например:

test = [[0], [1,2], 3]
for sub_list in test:
    try:
        iterator = iter(sub_list)
        for x in sub_list:
            print(x)
    except TypeError as te:
        print(sub_list)

, либо просто убедиться, что каждый элемент является итеративным:

test = [[0], [1,2], [3]]
for sub_list in test:
    for x in sub_list:
        print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...