Python中判断两数相等始终返回False的问题求助
解决Python中数值相等判断始终返回False的问题
嘿,我来帮你揪出这个问题的根源~
从你给出的输出里能看到关键线索:比如有一行是False 1 1——明明array[index2][2]的数值是1,index也是1,但判断结果却是False。这种情况大概率是数据类型不匹配导致的!
问题原因
你提到元组的第三个元素是数字,但很可能它实际存储的是字符串类型(比如从文本文件、用户输入读取数据时,默认是字符串,没转换成整数)。而index是range()生成的整数,字符串和整数用==比较时,哪怕字面数值一样,也会返回False。
快速验证方法
你可以在判断前加一行打印类型的代码,确认两者的类型:
print(type(array[index2][2]), type(index))
如果输出是<class 'str'> <class 'int'>,那就能实锤是类型问题了。
解决方案
有两种思路可以解决:
- 比较时转换类型:把元组里的元素转成整数再和
index比较,修改判断条件:if int(array[index2][2]) == index: - 提前转换类型:在生成
array这个元组列表的时候,就把第三个元素转换成整数,这样后续比较就不用重复转换了,比如:# 假设你是这样生成元组的,加个int转换 array = [(x, y, int(z)) for x, y, z in original_data]
额外优化建议
你的嵌套循环写法可以更Pythonic一点,用enumerate()来同时获取索引和元素,可读性更好:
for idx, item in enumerate(array): for idx2, item2 in enumerate(array): if idx != idx2: print(int(item2[2]) == idx, item2[2], idx, "\n")
下次遇到类似“数值看起来相等但判断不成立”的问题,先检查两个值的类型,这是初学者最容易踩的坑哦!
内容的提问来源于stack exchange,提问作者Lujasik_
相关产品推荐
相关产品推荐

