Проверьте, нет ли в списке вложенных - PullRequest
0 голосов
/ 29 октября 2019

Как найти None во вложенном списке. Когда я запускаю следующий код, Hello не печатается. Я не знаю, как найти None в списке списка. Не могли бы вы помочь мне с этим простым вопросом.

myList = [[0,1,2],[5,None,300]]

if None in myList:

print("Hello")

Ответы [ 4 ]

4 голосов
/ 29 октября 2019

Вы можете использовать любое:

myList = [[0,1,2],[5,None,300]]
if any(None in l for l in myList):
    print("Hello")

или itertools.chain:

from itertools import chain
if None in chain(*myList):
    print("Hello")
4 голосов
/ 29 октября 2019

Это в основном особый случай Как сделать плоский список из списка списков? ;вам нужно сплющить его, чтобы выполнить тест. В этом случае наилучшим подходом является использование itertools.chain для выравнивания, что позволяет использовать тестирование in с коротким замыканием (оно останавливается, когда обнаруживается None, работа не выполняется дляэлементы после него):

from itertools import chain

myList = [[0,1,2],[5,None,300]]

if None in chain.from_iterable(myList):
    print("Hello")
0 голосов
/ 29 октября 2019
myList = [[0,1,2],[5,None,300]]

for x in myList:
    if None in x:
        print("Hello")

Обратите внимание, что он будет печататься один раз для каждого найденного "Нет".

0 голосов
/ 29 октября 2019

Обратите внимание на отступ:

for inner_list in myList:
   for item in inner_list:
      if item is None:
         print('hello')
...