python for循环除了

ary*_*yan 0 python

我有一个清单

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'

nig*_*222 5

可以在一行中完成,尽管这样做是一种可怕的编程风格。

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'}和循环将只处理一次重复项,而不是多次。有时,这是一个相当理想的结果。