如何检查列表中是否存在整数或字符串



我想知道如何检查整数是否在列表中。这是我编写的一些代码:

# "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!")

最新更新