2011-09-14 76 views
0

我想加入一個清單,條件語句,如列表:加盟蟒蛇不同的條件

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] 

如果有一個更優雅的Python的解決方案?

感謝,

梅厄


更多的解釋: 在上面的例子中,如果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)