2017-02-27 11 views
0

リスト内包表記の間に複数のifをネストできますか?例えば、機能は、オプションのパラメータを取り、あなたが見ることができるようにリスト内包表記を持つif文を入れ子にした

@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文を使ってリスト内包を行うことができますか?

助けが必要ですか?

おかげ

+1

リストカッコ '任意の(...'一致しない場合.. 。 –

+0

'x 'ではなく' x'を出力します... –

+4

最良の例ではありませんが、いくつかの結果を表示するだけの場合は、**リストの理解度と組み合わせてください** – Elmex80s

答えて

0

私はあなたの例では、list comprehensionmultiple ifsを使用することが可能な優れたものであるとは思いません。

そうでない場合、あなたはこの例を見て、あなたのニーズを満たすためにそれを変更することができます

私が思う、私はこの1つのようaと呼ばれるlist of listsを持っている:

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

と私はあれば見つけたいです各サブリストの各要素はodd,evenまたはzeroであり、リストの別のリストを、デフォルトリストのリストに関する新しい情報とともに返します。

ので、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']] 
関連する問題