2009-10-09 8 views
12

No estoy seguro de si necesito una lambda, o alguna otra cosa. Pero aún así, necesito lo siguiente:expresión "para" una línea de Python

Tengo un array = [1,2,3,4,5]. Necesito poner esta matriz, por ejemplo, en otra matriz. Pero escríbelo todo en una línea.

for item in array: 
    array2.append(item) 

Sé que esto es completamente posible para recorrer los elementos y hacerlo de una sola línea. Pero los manuales de Google y la lectura no me ayudaron demasiado ... si me pueden dar una pista o un nombre para que yo pueda encontrar lo que es, realmente lo agradecería.

Actualización: digamos esto: array2 = SOME FANCY EXPRESSION THAT IS GOING TO GET ALL THE DATA FROM THE FIRST ONE

(el ejemplo no es real sólo estoy tratando de recorrer diferentes fragmentos de datos, pero eso es lo mejor que podía ocurrir.)

+2

"Pero escríbelo todo en una línea". ... ¿Por qué? El programa no mejora porque usa menos líneas. –

+0

extremadamente gracioso. estoy tratando de aprender el idioma y estás teniendo errores. ESTE EJEMPLO NO ES REAL, hombre – 0100110010101

+5

@opetrov: Ser grosero con las personas que piden una aclaración no hace mucho excepto evitar que las personas quieran ayudarlo. NO SEA GROSERO, hombre –

Respuesta

33

La palabra clave que está buscando es list comprehensions:

>>> x = [1, 2, 3, 4, 5] 
>>> y = [2*a for a in x if a % 2 == 1] 
>>> print(y) 
[2, 6, 10] 
+0

en realidad, sí! eso es lo que estaba buscando!) ¿Puede decirme cómo se llama esta cosa para que pueda leer más sobre otras posibilidades y operadores también?) – 0100110010101

+0

Por cierto, también puede saber lo siguiente: Tengo un objeto: a = {"id": 1, "smth": 2} necesito agregarle una propiedad con un nombre "smth2", para que mi a sea: a = {"id": 1, "smth" : 2, "smth2": 3} – 0100110010101

+0

nm es un diccionario. lo he descubierto. – 0100110010101

8
for item in array: array2.append (item) 

O, en este caso:

array2 += array 
+0

brillante :) probablemente necesite cambiar la pregunta) – 0100110010101

1

Si usted está tratando de copia la matriz:

array2 = array[:] 
1

Si realmente sólo tiene que añadir los elementos de una matriz a otra, el operador '+' ya está sobrecargado de hacer eso, dicho sea de paso:

a1 = [1,2,3,4,5] 
a2 = [6,7,8,9] 
a1 + a2 
--> [1, 2, 3, 4, 5, 6, 7, 8, 9] 
1

Incluso array2.extend(array1) va a funcionar.

Cuestiones relacionadas