如何检查一个整数或字符串是否存在于列表中。
如上所述,int == "1"
和int == 10
都是False
,所以整体检查结果为False
。你想要做的是检查列表中的元素是否是int
的实例,而不是是否等于int
。
if any(isinstance(x, int) for x in my_list): ...
请注意,通常情况下,在推断对象的类型时,使用isinstance
应优先于type
,因为前者考虑了继承关系。
不错的选择。有点复杂,但绝对是更好的选择。
我还有一个问题,如何检查一个项目不是一个str?
同样的技巧适用,只需检查元素是否不是字符串。我假设你熟悉not
运算符?
这个问题的出现是因为在Python中,int == 10
的结果是False。在Python中,int
是一个类,而10
是该类的一个实例。尽管如此,它们并不等同于彼此。
要解决这个问题,首先需要进行一些预处理。有许多方法可以做到这一点,最终取决于你的目标是什么。以下是一个示例:
my_list = ["1", 10] # 创建一个新的列表,存储my_list中每个元素的类型 types = [type(x) for x in my_list] if int in types: # 对类型进行检查,而不是对实例本身进行检查 print("列表中存在整数!")
假设这是最简单的方法?
如果你真的想使用in
语句,那么这可能是最简单的方法。另一种方法是使用for x in my_list:
循环,并在循环内部使用if type(x) == int:
进行检查。