Как проверить, что в моем списке больше двух значений, отличных от 0? - PullRequest
0 голосов
/ 11 апреля 2020

Как создать функцию, которая возвращает True, если в моем списке 2 или более элементов, которые отличаются от 0, и возвращает False, если в моем списке менее 2 элементов, которые не являются 0?

(Неверный код, чтобы вы поняли идею)

list=[0, 0, 0, 0, 0, 1, 0 , 4]
def checker:
    if > 2 items in list are > 0:
        return True
    else:
        return False

Как я мог на самом деле сделать это в Python?

Ответы [ 7 ]

4 голосов
/ 11 апреля 2020

Вам не нужно l oop над числами, просто посчитайте нули и сравните с длиной списка ...

my_list=[0, 0, 0, 0, 0, 1, 0 , 4]
def checker(my_list):
    return len(my_list) - my_list.count(0) >= 2 
checker(my_list)
2 голосов
/ 11 апреля 2020

Простое решение состоит в подсчете количества элементов, которые не равны 0

def checker(lst):
    counter = 0
    for i in lst:
        if (i != 0):
            counter += 1
    return counter >= 2

Лучшим решением является использование списка:

def checker(lst):
    return len([i for i in lst if i != 0]) >= 2
0 голосов
/ 11 апреля 2020

Вы можете сделать это следующим образом:

lst=[0, 0, 0, 0, 0, 1, 0 , 4]

if sum(map(bool,lst)) >= 2:
    print("2 or more non-zero")
else:
    print("fewer than 2 non-zero")
0 голосов
/ 11 апреля 2020
# your code goes here
data=[0, 0, 0, 0, 0 , 0 , 4]
def checker(data):
    return len(list(filter(lambda x: x!=0, data)))>=2

print(checker(data))
0 голосов
/ 11 апреля 2020

Самый эффективный метод - просто использовать count метод list:

def check(l):
    return (len(l) - l.count(0)) >= 2
0 голосов
/ 11 апреля 2020
list1=[0, 0, 0, 0, 0, 1, 0 , 4]
if len([x for x in list1 if x!=0 ])>1:
     print('True')
else:
     print('False')
0 голосов
/ 11 апреля 2020
def checker(l, thresh=2):
    return len([i for i in l if i > 0]) >= thresh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...