I know you can do something like this in python:
>>> conditional = False
>>> x = [1 if conditional else 2, 3, 4]
[ 2, 3, 4 ]
but how would I do something like this?
>>> conditional = False
>>> x = [1 if conditional, 3, 4]
[ 3, 4 ]
That is, I don't want to substitute the 1
for another number. I want to simply omit it if conditional
is false.
Slightly faster than https://stackoverflow.com/a/18988829/1093967 in Python 3.5+ (leveraging additional unpacking generalizations introduced by PEP-448):
>>> timeit("([1, 2, 3] if True else []) + [4, 5, 6]")
0.10665618600614835
>>> timeit("[*([1, 2, 3] if True else []), 4, 5, 6]")
0.08992647400009446
Use concatenation:
x = ([1] if conditional else []) + [3, 4]
In other words, generate a sublist that either has the optional element in it, or is empty.
Demo:
>>> conditional = False
>>> ([1] if conditional else []) + [3, 4]
[3, 4]
>>> conditional = True
>>> ([1] if conditional else []) + [3, 4]
[1, 3, 4]
This concept works for more elements too, of course:
x = ([1, 2, 3] if conditional else []) + [4, 5, 6]
You can do it with a slice
x = [1, 3, 4][not conditional:]
eg
>>> conditional = False
>>> [1, 3, 4][not conditional:]
[3, 4]
>>> conditional = True
>>> [1, 3, 4][not conditional:]
[1, 3, 4]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With