2017-02-27 50 views
0

如何嵌套多个ifs,而你有列表理解?Python嵌套如果语句与列表理解

我有这样的功能:

@click.command 
@click.option(--a) 
@click.option(--b) 
def func1(a,b): 
    for x in list1: 
    if any([a, b]): 
     if any(x==a, x==b]): 
     print ('x') 
    else: 
     print ('x') 

正如你可以看到例如函数有可选参数。 因此,如果将a或b传递给func1,只会打印出匹配a或b的x。 如果没有参数传递,将打印list1的所有元素。

我该如何使用嵌套if else语句进行列表理解?

任何帮助?

感谢

+1

名单括号'如果有的话(...'不匹配.. –

+0

它也会打印''x'',而不是'x' ... –

+4

不是最好的例子,如果它只是打印出一些结果,那么我会**不会**与列表理解混合起来 – Elmex80s

回答

0

我不认为你的例子就是很好的一个,可以在其中内list comprehension使用multiple ifs

否则,你可以看看下面这个例子,并对其进行修改以满足您的需要:

我想,我有一个list of lists称为a像这样的:

a = [[1, 2, 0], [5, 6, 0], [0, 3, 5]] 

,我想找到,如果每个子列表的每个元素是odd,evenzero然后返回列表的另一个列表与关于我的默认列表的新信息。

因此,使用list comprehensionmultiple ifs,我可以做这样的事情:

final = [["odd" if (k %2 != 0 and k != 0) else "even" if (k%2 == 0 and k!=0) else "zero" for k in j] for j in a ] 

print(final) 

输出:

>>> [['odd', 'even', 'zero'], ['odd', 'even', 'zero'], ['zero', 'odd', 'odd']]