Mam prostą listę.Listowanie ze stanem
>>> a = [0, 1, 2]
Chcę utworzyć z niego nową listę, korzystając ze sprawdzenia listy.
>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]
Całkiem proste, ale co zrobić, jeśli chcę działać tylko na elementach niezerowych?
"jeśli" potrzebuje "innego" w rozumieniu listy, więc wymyśliłem to.
>>> b = [x*2 if x != 0 else None for x in a]
>>> b
[None, 2, 4]
Jednak pożądanym rezultatem jest.
>>> b
[2, 4]
mogę zrobić, że ten sposób
>>> a = [0, 1, 2]
>>> def f(arg):
... for x in arg:
... if x != 0:
... yield x*2
...
>>> list(f(a))
[2, 4]
lub za pomocą 'filtra' i lambda
>>> a = [0, 1, 2]
>>> list(filter(lambda x: x != 0, a))
[1, 2]
Jak uzyskać ten wynik za pomocą listy ze zrozumieniem?
Jesteś moim bohaterem. =) – selurvedu