Powiedzmy, że mam tę listę

x = [1,10,5,4]

I chcę dodać 1 dla każdego elementu listy. Więc wyjście będzie

x = [2, 11, 6, 5].

Czy jest łatwy sposób, aby to zrobić bez użycia do pętli?

-2
Mero 28 listopad 2013, 16:24

4 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego

x = [1,10,5,4]
x = map(lambda y: y+1, x)
3
sheh 28 listopad 2013, 12:27

Co za śmieszne wymagania

x = [x[0]+1, x[1]+1, x[2]+1, x[3]+1]

Łatwy sposób jest z pętlami

Korzystanie z map

x = map(1 .__add__, x)

Ale wtedy większość ludzi nazyłaby to pętla

2
John La Rooy 28 listopad 2013, 12:26

Pętle są dobre. Komplikacje listy są świetne.

x = [e+1 for e in x]

Jak powiedział Koffin, jest jeszcze szybszy niż funkcja mapy:

>>> timeit.timeit("[e+1 for e in x]","x = list(range(100))",number=100000)
0.7970689787364194
>>> timeit.timeit("map((1).__add__,x)","x = list(range(100))",number=100000)
0.8699621167282174
>>> timeit.timeit("map(y,x)","x=list(range(100));y=lambda x:x+1",number=100000)
1.8961955365813026
2
Vincent 28 listopad 2013, 12:51

To powinno pomóc.

y = lambda x: x+1

x = [1,10,5,4]

map(y, x)
1
shshank 28 listopad 2013, 12:28