Chcę rozpakować utworzone przeze mnie krotki, wykonując następujące czynności, aby wynik był tylko jedną prostą listą. Mogę uzyskać pożądany wynik w 2-3 liniach, ale na pewno jest lista oneliner list.comp?Zrozumienie listy Pythona, rozpakowywanie i wiele operacji
x = range(10)
y = [(i,j**2) for i,j in zip(x,x)]
>>>y
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49), (8, 64), (9
, 81)]
>>>
Co chcę jest result = [0,0,1,1,2,4,3,9.....]
Doing
y = len(x)*[0]
y[::2] = x
y[1::2] = [i**2 for i in x]
daje to, co chcę, ale co jeśli trzeba bardziej ogólnym przypadku:
y = [(i, sqrt(i), i**3, some_operation_on_i, f(i), g(i)) for i in x]
Np powinienem być w stanie aby uzyskać prostą listę, taką jak wynik, w której podaję tylko jedną operację (kwadrat), aby śledzić każdy i, ale teraz z dowolną liczbą operacji następujących po i.
Zapomniałeś zagnieżdżona lista comps całkowicie, dzięki. Zaakceptowanie tego, ponieważ jest to szybsza metoda i robi to w pliku list.comp. Zgadzam się, że to niezręczne, ale nie sądzę, że będę potrzebował więcej niż 4-5 operacji na i. – arynaq