我正在编写一个以数字列表作为参数的函数“ 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整除,只是相除。
感谢您的帮助!
答案 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))