Python列表推导式报SyntaxError,请求排查错误原因(Anaconda3-4.2.0)
解决你的Python列表推导式语法错误问题
Hey there! Let's break down why you're getting that SyntaxError and fix it right away.
错误原因分析
你的列表推导式缺少了迭代的可迭代对象。Python列表推导式的标准结构是:
[表达式 for 变量 in 可迭代对象]
你写的代码correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b)]里,for (a, b)后面没有指定要遍历的对象(比如包含二元组的列表、元组等),这就违反了Python的语法规则,所以触发了SyntaxError。
修正后的代码示例
假设你有一个包含多个(a,b)二元组的列表需要处理,比如:
# 定义要处理的二元组集合 input_pairs = [(0, 0), (1, 1), (0, 1), (1, 0)] # 修正后的列表推导式,添加了in input_pairs correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in input_pairs] print(correct) # 输出结果: [1, 1, 0, 0]
额外小优化
其实你的判断条件可以简化,因为(a == 1 and b == 1) or (a == 0 and b == 0)等价于a == b,所以代码可以更简洁:
correct = [1 if a == b else 0 for (a, b) in input_pairs]
这样功能完全一样,但可读性更高。
内容的提问来源于stack exchange,提问作者electronic component
相关产品推荐
相关产品推荐

