我的下面的程序确实找到了列表中最常见的元素:
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0]
counter = []
for num in range(10):
n = numbers.count(num)
counter.append(n)
largest = max(counter)
print(counter.index(largest))
Run Code Online (Sandbox Code Playgroud)
输出是 7,这是正确的。
但是,如果我在列表中添加另外 9 个:
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
Run Code Online (Sandbox Code Playgroud)
这意味着列表中有两个最常见的元素(在本例中,7 和 9 都出现了 3 次,如上所示),它只打印其中之一 - 在本例中为 7。
有什么方法可以更改我的代码,以便输出正确吗?
我的目标是创建一个函数来检查一个数字是否在给定的范围内。
所以,我创建了一个函数 range_check(),它接受三个参数——数字、低和高。我还创建了 4 个存储为元组的测试用例。前三个测试用例为真,最后一个为假。
def range_check(num, low, high):
return low <= num <= high
test_values = [(2, 1, 4), (5, 2, 7), (3, 1, 10), (3, 4, 5)]
for test_case in test_values:
print(range_check(test_case[0], test_case[1], test_case[2]))
Run Code Online (Sandbox Code Playgroud)
由于我最近发现了 lambda 是什么以及如何使用它(我对 Python 和一般编程还是很陌生),我想尝试使用 lambda 和 map 来解决这个问题(或者过滤器也可以在这里使用,我猜)
test_values = [(2, 1, 4), (5, 2, 7), (3, 1, 10), (3, 4, 5)]
print(list(map(lambda num, low, high: low <= num <= high, test_values)))
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误 - lambda 缺少 2 个必需的参数 - 低和高。
有什么方法可以将一组参数插入到这样的函数或 lambda 中吗? …