在python中加入具有不同条件的列表

时间:2011-09-14 07:32:11

标签: python list-comprehension

我想加入一个带有条件语句的列表,例如:

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]

如果有更优雅的pythonic解决方案?

谢谢,

梅尔


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

3 个答案:

答案 0 :(得分:1)

如果满足条件,则只应将每个元素添加到列表中,分别说明每个条件并添加元素(如果满足)。列表理解是指当您拥有现有列表并且希望以某种方式处理其中的元素时。

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

答案 1 :(得分: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')

答案 2 :(得分:0)

这对你有用吗?

items = ['a', 'b', 'c'] if cond1 else ['b', 'c']
items.extend(['d', 'e'] if cond2 else ['e'])
str = '\n'.join(items)