Я могу определить список так:
c = some_condition # True or False
l = [
1, 2, # always
3 if c else 4
]
# l = [ 1, 2, 3 ] if c is True, [ 1, 2, 4 ] otherwise
Но как я могу определить список, который [1,2,3]
, если c истинно, [1,2]
в противном случае?
l = [
1, 2,
3 if c # syntax error
]
l = [
1, 2,
3 if c else None # makes [1,2,None]
]
l = [
1, 2,
3 if c else [] # makes [1,2,[]]
]
# This is the best that I could do
l = (
[
1, 2,
]
+
([3] if c1 else []) # parentheses are mandatory
)
# Of course, I know I could
l = [1, 2]
if c:
l.append(3)
Кроме того, я хочу знать, как вставить несколько элементов, когда условие выполняется: например, 3, 4
вместо 3
.
В Perl, например, я мог бы сделать:
@l = (
1, 2,
$c1 ? 3 : (), # empty list that shall be flattened in outer list
$c2 ? (4,5) : (6,7), # multiple elements
);