Проверьте, является ли какой-либо элемент в списке пустым / «не числом» (Python) - PullRequest
1 голос
/ 08 марта 2020

Я хочу использовать оператор if, который проверяет, содержит ли список пустой элемент. Строка, которая делает что-то вроде этого:

list1 = [1,2,[],2]
list2 = [1,2,1,2]

>>>list1 'contains empty element'
True

>>>list2 'contains empty element'
False

Я очень обеспокоен временем выполнения.

Большое спасибо за любую помощь!

Ответы [ 4 ]

1 голос
/ 08 марта 2020

Если вам нужно любое число и любой элемент, который имеет логическое значение True, попробуйте это:

def any_empty(lst):
    return not all(isinstance(x, int) or x for x in lst)

print(any_empty([0, 1, 2, 3, ["Foo"]]))
print(any_empty([ () ]))
print(any_empty([ [] ]))

Вывод:

False
True
True
1 голос
/ 08 марта 2020

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

any(e == [] for e in my_list)

или:

[] in my_list

, если вы хотите использовать if-statement:

def check(my_list):
    for e in my_list:
        if e == []:
            return True
    return False

print(check(list1))
print(check(list2))

выход:

True
False

Или вы можете использовать троичный оператор:

True if [] in my_list else False
1 голос
/ 08 марта 2020

Пожалуйста, проверьте это.

list1 = [1,2,[],2]
list2 = [1,2,1,2]


if [] in list1:
    print("List 1 contains empty list ? ", ([] in list1))

if [] in list2:
    print("List 2 contains empty list ? ", ([] in list2))

Или

print("List 1 contains empty list ? ", ([] in list1))
print("List 2 contains empty list ? ", ([] in list2))

1 голос
/ 08 марта 2020

Здесь:

all([not (isinstance(x, list) and not x) for x in list1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...