我想知道如何检查整数是否在列表中。这是我编写的一些代码:
# "1" is a string. 10 is an integer.
my_list = ["1", 10]
if int in my_list:
print("Integer in the list!")
这段代码有什么问题?我该如何让它工作?
正如Cargcigenicate所提到的,int == "1"
和int == 10
都是False
的,所以整体检查是False
。你要做的是检查列表中的元素是否是int
的实例,而不是它们是否等于int
。
这可以通过使用内置any
和生成器表达式更简洁地完成:
if any(isinstance(x, int) for x in my_list):
...
请注意,一般来说,在推理对象类型时,应该优先使用isinstance
而不是type
,因为前者会考虑继承。
问题是,int == 10
是错误的。int
是一个类,10
是类的一个实例。然而,这并不意味着它们相互等同。
您需要先进行一些预处理。有很多方法可以做到这一点,最终取决于您的最终目标是什么,但举个例子:
my_list = ["1", 10]
# Create a new list that holds the type of each element in my_list
types = [type(x) for x in my_list]
if int in types: # And check against the types, not the instances themselves
print("Integer in the list!")