2017-02-27 46 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']]