python for循环除外

时间:2015-09-23 06:10:03

标签: python

我有一个清单

my_list = ['a', 'b', 'c']
for my_value is my_list except'a':
    print(my_value)

在这里,我希望迭代所有值并将它们打印出来#< a'

我该怎么做?我知道可以使用if条件完成,但我想知道如果for my_value in my_list except 'a'

我是否可以在一行中完成

1 个答案:

答案 0 :(得分:2)

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

for value in [ v for v in my_list if v != 'a' ]

我推荐的是两行。 if ... : continue立即开始循环的下一次迭代,因此跳过循环体的其余部分。

for value in my_list:
   if value == 'a': continue 
   # rest of loop code

还有一个优雅的单行,不能解决所提出的问题。这是

for value in set(my_list) - {'a'}

它不是答案的原因是(a)集合是无序的,因此for循环不一定按照它们存储在my_list中的顺序处理my_list的元素。至关重要的是(b),一个集合不能包含重复项,因此set(['c','d','c']) == {'c','d'}并且循环将仅处理一次重复,而不是多次。有时候,这是一个相当令人满意的结果。