Python ==许多语句而不是if/elif

Try*_*ard 0 python

我在下面尝试这个.

my_list = []

for row in reader: 
    a = row[0]
    b = row[1]
    c = row[2]
    s=("{0:<5s} {1:<5s} {2:<8s} ".format(a,b,c))
    lst = my_list.append(s)
    if b == ("Home"):
        n_lst = new_lst.appen(s)
Run Code Online (Sandbox Code Playgroud)

我想如果输出中的行b等于"home""消失"等,则将该行放入新列表中.我试过了

if b == ("home", "gone"):
Run Code Online (Sandbox Code Playgroud)

但这不起作用,有没有办法继续添加到我的if ==语句而不是做一堆elif语句?

Ble*_*der 10

请改用in关键字:

if b in ['home', 'gone']:
Run Code Online (Sandbox Code Playgroud)

这将检查是否b是该列表的元素.

此外,您似乎在拼写错误:

n_lst = new_lst.appen(s)
                     ^
Run Code Online (Sandbox Code Playgroud)

  • @defuz:为什么?如果你正在优化性能,那么`set` /`frozenset`会不会更好? (5认同)
  • @Blender和Ashwini Chaudhary:实际上,由于创建文字所花费的时间,测试集合文字中的成员资格比测试元组文字中的成员资格要慢.用`timeit`试试吧.这是令人惊讶的,但确实如此.当文字的创建移出循环之外时,创建时间将摊销,并且发生使用集合的预期加速.如果你不能将集合创建移出循环,则更喜欢`如果(item,item2,item3)中的某些东西超过`,如果{item,item2,item3}中有东西`. (4认同)
  • @Blender,`set`在这种情况下会慢2倍.核实.) (2认同)