如何找到可以被整数10整除的多数整数?

时间:2018-11-21 16:13:45

标签: python list loops

我正在编写一个以数字列表作为参数的函数“ most_of”。该函数的目的是获取列表,对其进行迭代,然后确定列表中的大多数整数是否可被10整除。

例如,如果我传递了参数:

[1,10,10,50,5]

输出为:

True

因为3/5的整数可以被10整除。但是,如果我通过了:

 [1,2,55,77,6]

输出为:

 False

因为列表整数中的4/5不能被10整除。

这是我尝试过的:

def most_of(lst):
    for i in lst:
        if lst[i] % 10 == 0:
           lst == True
        else:
           lst == False

这时我基本上陷入了困境,因为这并不能检查大多数数字是否可以被10整除,只是相除。

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

计算有多少个整数可以被10整除,并测试该数字是否为“多数”-也就是说,它是否大于或等于列表长度的一半。像这样:

/[ \t\r]+/

例如:

def most_of(lst):
    num = sum(1 for n in lst if n % 10 == 0)
    return num >= len(lst) / 2.0

答案 1 :(得分:1)

  

该函数的目的是获取列表,对其进行迭代,然后   找出列表中的大多数整数是否可以被10整除。

您的列表将包含两种整数:可以被10整除的整数和不能被整除的整数。您需要找到两个类别中每个类别的整数数量,比较这些数字并相应地返回True或False。因此,您的函数将如下所示:

def most_of(lst):
    divisible_counter = 0
    non_divisible_counter = 0
    for element in lst:
        if element % 10 == 0:
            divisible_counter +=1
        else:
            non_divisible_counter += 1
    if divisible_counter > non_divisible_counter:
        return True
    else:
        return False

当然,上述所有代码都可以减少很多。但是我想展示一种对Python初学者来说更容易理解的算法。

答案 2 :(得分:0)

对奥斯卡答案的略微修改:

def most_of(lst):
    return sum(1 if n % 10 == 0 else -1 for n in lst) >= 0

具有相同的结果

lst1 = [1,10,10,50,5]
lst2 = [1,2,55,77,6]

print(most_of(lst1))  # True
print(most_of(lst2))  # False

答案 3 :(得分:-1)

在测试完第一个数字后,便为列表分配了布尔值,但是您必须对所有可以除以10且不休息的数字和所有其他数字进行计数,然后比较此计数器:

def most_of(lst):
    divideByTen = 0
    otherNumbers = 0
    for i in lst:
        if i % 10 == 0:
           divideByTen+=1
        else:
           otherNumbers+=1
    if(divideByTen > otherNumbers):
        return True
    else:
        return False


a = [1,10,10,50,5]
b = [1,2,55,77,6]

print(most_of(a))
print(most_of(b))