如何检查列表中是否存在提供的一系列数字? - Python

时间:2014-01-10 21:14:34

标签: python

我有一段相当繁琐的代码:

s=[1,2,3,4,5,6,7,8,9]

if 1 in s or 2 in s or 3 in s or 4 in s or 5 in s or 6 in s or 7 in s or 8 in s or 9 in s:
    print("Yes, a number between 1-9 exists in list s)

有比这更好的方法吗?我想检查列表中[1-9]之间是否存在任何数字。

2 个答案:

答案 0 :(得分:4)

您可以使用any()range(1, 10)来检查某个号码是否在s中:

if any(x in s for x in range(1, 10)):
    print('yes')

这会使用generator expression来避免在将值传递给any()之前创建整个值列表。

答案 1 :(得分:0)

我喜欢@Simeon Visser的回答,但只适用于小清单。

如果您需要使用大型列表执行此类操作,则应该使用set intersection,如下所示:

data_to_test = [1, 2, 3, 4, 5, 6, 7, 8, 9]

values = list(range(1, 10))

set_data = set(data_to_test)
set_values = set(values)

if set_data.intersection(set_values):
    print("yes")