Python条件表达式else分支如何实现类似pass的跳过添加效果?
问题原因
Python 的三元表达式 X if 条件 else Y 属于有返回值的表达式,必须同时提供条件成立和不成立时的返回值。你将它放在append()的入参位置时,无论条件是否成立,append()都会执行,会把三元表达式的返回值插入列表,因此不管else分支写什么内容,都会往列表中添加多余元素,无法实现跳过效果。
解决方案
你有两种仅修改append行代码的实现方式,无需改动其他while循环逻辑:
方案1:将append放在条件判断分支(更易读)
直接把整行append代码替换为条件判断,只有姓名不存在时才执行append操作:
if name not in list_test: list_test.append(name)
方案2:使用extend配合三元表达式(保留表达式写法)
如果你一定要保留在方法入参中写条件的写法,可以把append换成extend,else分支返回空列表,extend空列表不会对原列表产生任何修改:
list_test.extend([name] if name not in list_test else [])
运行效果
两种方案修改后运行代码,都会得到你预期的去重结果:
['Gabriel', 'Lucas', 'Pedro', 'Fernando']
内容的提问来源于stack exchange,提问作者user15785950
相关产品推荐
相关产品推荐

