2011-09-14 5 views
0

私は、次のような条件文でリストに参加したい:各要素は、異なる条件節(すべてであれば)を持っているので、通常のリストの内包がない異なる条件でのpythonでリストに参加する

str = "\n".join["a" if some_var is True, "b", "c", "d" if other_var==1, "e"] 

この場合に適しています。私が考え

解決策は以下のとおりです。

lst = ["a" if some_var is True else None, "b", "c", "d" if other_var==1 else None, "e"] 
str = "\n".join[item for item in lst if item is not None] 

があれば、よりエレガントなニシキヘビソリューション?

おかげで、

メイア


詳細な説明:上記の例では 、some_varがTrueに等しく、other_varが1に等しい場合、私は次の文字列を取得したいと思います:

a 
b 
c 
d 
e 

some_varがFalseで、other_varが1に等しい場合は、次の文字列を取得したいと考えています。

b 
c 
d 
e 

some_varはTrueでother_varは、私は、以下の文字列を取得したいと思い1に等しいされていない場合:

a 
b 
c 
e 

答えて

0

私は、これはあなたが欲しいものだと思う:

lst=[] 
if some_var == True: 
    lst.append('a') 
lst.append('b') 
lst.append('c') 
if other_var == 1: 
    lst.append('d') 
lst.append('e') 
1

それぞれの場合に要素がリストに追加されるのは、条件が満たされている場合のみで、各条件を別々に記述し、要素が満たされている場合は要素を追加する必要があります。リストの理解は、既存のリストがあり、その中の要素をなんらかの方法で処理したいときに使用します。

lst = [] 
if some_var is True: 
    lst.append('a') 
lst.extend(['b', 'c']) 
if other_var == 1: 
    lst.append('d') 
lst.append('e') 
0

これは機能しますか?

items = ['a', 'b', 'c'] if cond1 else ['b', 'c'] 
items.extend(['d', 'e'] if cond2 else ['e']) 
str = '\n'.join(items) 
関連する問題