我有一个清单
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'
答案 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'}
并且循环将仅处理一次重复,而不是多次。有时候,这是一个相当令人满意的结果。