如何用Python循环检查列表元素是否存在于另一列表及解决无限循环问题
问题分析与解决
首先纠正一个点:你贴的代码不会触发无限循环,但有两个明显问题导致运行异常或结果不符合预期:
- 缩进错误:
if i!=j:语句块没有缩进,Python靠缩进区分代码块,这会直接抛出语法错误,可能让你误以为是无限循环。 - 逻辑完全偏离需求:你的需求是检查列表a的元素是否存在于b中,但代码的双层循环会把b中所有不等于当前a元素的项重复添加到c里——比如遍历a的第一个元素1时,把b里除1外的所有元素塞进c;遍历a的第二个元素2时,又把b里除2外的所有元素塞进c,最终c会变成
[2,3,4,5,6,7,8,9,1,3,4,5,6,7,8,9],和“检查存在”的需求完全不沾边。
针对你的需求的正确实现
需求1:检查a中每个元素是否在b里
直接用Python的in关键字就能快速判断,不需要嵌套循环:
a = [1, 2] b = [1, 2, 3, 4, 5, 6, 7, 8, 9] for elem in a: if elem in b: print(f"{elem} 存在于列表b中") else: print(f"{elem} 不存在于列表b中")
需求2:提取b中不在a里的元素(看你定义了c列表,可能是这个需求)
用列表推导式一行搞定,简洁高效:
a = [1, 2] b = [1, 2, 3, 4, 5, 6, 7, 8, 9] c = [elem for elem in b if elem not in a] # 运行后c的值为 [3,4,5,6,7,8,9]
内容的提问来源于stack exchange,提问作者bharat bisht
相关产品推荐
相关产品推荐

