2012-02-16 13 views

Respuesta

77
new_list = [x+1 for x in my_list] 
+3

Por qué no 'para el correo en LST: e + = 1' trabajar? –

+6

Esta charla lo explica: Hechos y mitos sobre los nombres y valores de Python: http://nedbatchelder.com/text/names1.html –

+0

√ Información impresionante. Ojo abierto. –

12

Las otras respuestas en la lista de comprensión son probablemente la mejor opción para la adición simple, pero si tiene una función más compleja que necesita aplicar a todos los elementos, entonces map puede ser una buena opción.

En su ejemplo sería:

>>> map(lambda x:x+1, [1,2,3]) 
[2,3,4] 
+3

'map (1 .__ add__, ...)' funciona también. Tenga en cuenta que necesita un espacio entre '1' y' .' para evitar que el analizador piense que es un flotante –

4

Python 2+:

>>> mylist = [1,2,3] 
>>> map(lambda x: x + 1, mylist) 
[2, 3, 4] 

Python 3+:

>>> mylist = [1,2,3] 
>>> list(map(lambda x: x + 1, mylist)) 
[2, 3, 4] 
2

En primer lugar no usan la palabra 'lista' para tu variable Sombrea la palabra clave list.

La mejor manera es hacerlo en su lugar con el empalme, tenga en cuenta el [:] denota un empalme:

>>> _list=[1,2,3] 
>>> _list[:]=[i+1 for i in _list] 
>>> _list 
[2, 3, 4] 
+2

Esto es bueno para cambiar la lista existente, pero todavía produce una nueva. ¿De alguna manera no es seguro usar un generador para evitar la creación innecesaria de listas? Es decir, '_list [:] = (i + 1 para i en _list)'. – Alan

+0

@Alan buen punto - debería usar el generador –

6
>>> [x.__add__(1) for x in [1, 3, 5]] 
3: [2, 4, 6] 

Mi intención aquí es exponer si el elemento de la lista es un número entero que soporta varias funciones incorporadas.

+1

Buen recordatorio para nosotros, perdidos en la lista de comprensión mágica. – npit

3

si desea utilizar numpy hay otro método de la siguiente manera

import numpy as np 
list1 = [1,2,3] 
list1 = list(np.asarray(list1) + 1) 
Cuestiones relacionadas