Присоединение списка в python с различными условиями - PullRequest
0 голосов
/ 14 сентября 2011

Я хочу присоединиться к списку с помощью условного оператора, такого как:

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

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Если каждый элемент должен быть добавлен в список, только если условие выполнено, укажите каждое условие отдельно и добавьте элемент, если оно выполнено. Под списком понимается, когда у вас есть существующий список, и вы хотите каким-то образом обработать элементы в нем.

lst = []
if some_var is True:
    lst.append('a')
lst.extend(['b', 'c'])
if other_var == 1:
    lst.append('d')
lst.append('e')
0 голосов
/ 14 сентября 2011

Будет ли это работать для вас?

items = ['a', 'b', 'c'] if cond1 else ['b', 'c']
items.extend(['d', 'e'] if cond2 else ['e'])
str = '\n'.join(items)
0 голосов
/ 14 сентября 2011

Я думаю, это то, что вы хотите:

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