我有一个清单
my_list = ['a', 'b', 'c']
for my_value is my_list except'a':
print(my_value)
Run Code Online (Sandbox Code Playgroud)
在这里,我想遍历所有值并打印它们 excpet 'a'
我怎样才能做到这一点 ?我知道可以使用 if 条件完成,但我想知道是否可以在一行中完成,如果for my_value in my_list except 'a'
它可以在一行中完成,尽管这样做是一种可怕的编程风格。
for value in [ v for v in my_list if v != 'a' ]
Run Code Online (Sandbox Code Playgroud)
我推荐的是两条线。if ... : continue立即开始循环的下一次迭代,因此跳过循环体的其余部分。
for value in my_list:
if value == 'a': continue
# rest of loop code
Run Code Online (Sandbox Code Playgroud)
还有一个优雅的单线,并不能完全解决所提出的问题。这是
for value in set(my_list) - {'a'}
Run Code Online (Sandbox Code Playgroud)
它不是答案的原因是 (a) 集合是无序的,因此 for 循环不一定按照 my_list 的元素存储在 my_list 中的顺序处理它们。至关重要的是(b),集合不能包含重复项,因此set(['c','d','c'])=={'c','d'}和循环将只处理一次重复项,而不是多次。有时,这是一个相当理想的结果。