如何确保for循环中的值是列表指定元素而非仅相等,且仅输出一次True
解决Python中判断循环元素为同一对象实例的问题
要判断循环中的元素是否是x[0]的同一对象实例,不能用判断值相等的==,而要用判断对象身份的is运算符——它会检查两个变量是否指向内存中的同一个对象,而非仅仅值相等。
修改后的代码
x = [1,2,1,3] for i in x: if i is x[0]: print("True")
补充说明
is的本质是比较对象的身份标识,和id(i) == id(x[0])效果完全一致,id()函数可以返回对象的唯一内存地址。- 注意:Python对小整数(通常是-5到256范围)有全局缓存机制,示例中的两个
1可能会被视为同一对象,这时候用is还是会输出两次。如果你的需求是仅匹配列表中第一个位置的元素(不管对象实例是否重复),可以改用遍历索引的方式:
x = [1,2,1,3] for index, item in enumerate(x): if index == 0: print("True")
内容的提问来源于stack exchange,提问作者BBW
相关产品推荐
相关产品推荐

