Python列表元素匹配逻辑失效:原因排查与修复方案
问题解答
问题描述
请问上述代码的倒数第二行逻辑为何不生效?我期望当列表Q中的元素存在于列表A中时,将该元素添加至列表L。
问题代码
listing = [int(listing) for listing in input().split()] summ1 = int(listing[0]) summ2 = int(listing[1]) A = [int(summ1) for summ1 in input().split()] print(A) B = [int(summ2) for summ2 in input().split()] print(B) Q = [] for i in range(int(listing[2])): Q.append(input().split()) L = [] for i in range(int(listing[2])): if Q[i][1] == 'A' and Q[i][-1] in A: L.append(Q[i][-1])
原因分析
核心问题是类型不匹配:
- 列表
A中的元素是通过int()转换后的整数类型 - 列表
Q中的元素是input().split()直接得到的字符串类型
当执行Q[i][-1] in A时,是在判断一个字符串是否存在于整数列表中,这种跨类型的匹配永远不会成立,所以逻辑无法触发。
修复方案
把Q中要判断的元素转换成整数后再做存在性检查,修改倒数第二行的判断条件:
if Q[i][1] == 'A' and int(Q[i][-1]) in A:
如果Q中还有其他需要参与数值判断的元素,也可以在构建Q时针对性转换,但要注意保留Q[i][1]这类字符串标识不被转换。
内容的提问来源于stack exchange,提问作者BartyiTo
相关产品推荐
相关产品推荐

