2011-01-26 10 views

Respuesta

73

Con una lista de comprensión.

[x[1] for x in L] 
+36

Entiendo que esta es una pregunta simple. ¿Es TAN un lugar tan elitista? Intente buscar en Google la pregunta, los resultados no son lo que necesito. Aprendí Python de la manera difícil y no encontré esto allí. He hecho algunas preguntas antes sobre el mejor enfoque para aprender Python y la respuesta unánime es obtener un libro básico y simplemente sumergirme. Me frustra y no puedo encontrar la solución en ningún libro o material en línea. por ahora? Además, su comentario no es útil y desalienta a los nuevos miembros a publicar en SO. – super9

+1

@Nai: sugiero leer el tutorial de Python: http://docs.python.org/tutorial/index.html. En general, la documentación es muy buena. Y a veces, uno solo tiene que probar;) –

+13

Busqué en Google "acceder al elemento en tupla" con la intención de acceder a un elemento en una lista de tuplas. Me llevó a tu pregunta, así que gracias. Soy bastante nuevo en Python y no encuentro la respuesta particularmente intuitiva, ¡pero solo soy yo! –

-1

podría sugerir:

Norm Matloff's Quick Python Tutorials

Ir a la sección de tuplas. Tendrás tu respuesta y una guía superior para aprender los fundamentos de Python.

+0

El enlace está roto. conoces el nuevo lugar donde reside ahora – LonelySoul

+0

@LonelySoul: lo arregló. – LarsH

55

Respuesta de Ignacio es lo que quieres. Sin embargo, como alguien que también está aprendiendo Python, déjame intentar diseccionarlo por ti ... Como se mencionó, es una lista de comprensión (cubierta en DiveIntoPython3, por ejemplo). Aquí están algunos puntos:

[x[1] for x in L]

  • Aviso los [] 's alrededor de la línea de código. Estos son los que definen una lista. Esto le dice que este código devuelve una lista, por lo que es del tipo list. Por lo tanto, esta técnica se llama "lista de comprensión".
  • L es su lista original. Por lo tanto, debe definir L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)] antes de ejecutar el código anterior.
  • x es una variable que sólo existe en la comprensión - intentar acceder x fuera de la comprensión, o escriba type(x) después de ejecutar la línea anterior y se le dirá NameError: name 'x' is not defined, mientras que los rendimientos type(L)<class 'list'>.
  • x[1] apunta al segundo elemento en cada una de las tuplas, mientras que x[0] apuntaría a cada uno de los primeros elementos.
  • Así que esta línea de código literalmente dice "devuelve el segundo elemento en una tupla para todas las tuplas en la lista L."

Es difícil decir cuánto intentó resolver el problema antes de hacer la pregunta, pero quizás no estaba familiarizado con las comprensiones. Pasaría algún tiempo leyendo Chapter 3 of DiveIntoPython o cualquier recurso sobre comprensión. Buena suerte.

+4

En 2.x, 'x' existirá fuera de la LC, con el último valor vinculado a ella. Esto está arreglado en 3.x. –

+0

No me di cuenta de esto. Gracias por la info. – gary

+2

Awesome explanation @gary. Agradezco especialmente que hayas señalado a qué se refiere L. –

5

Una comprensión de la lista es absolutamente la manera de hacer esto. Otra forma en que debería ser más rápido es map y itemgetter.

import operator 

new_list = map(operator.itemgetter(1), old_list) 

En respuesta al comentario de que el PO no pudo encontrar una respuesta en Google, voy a señalar una manera muy ingenua para hacerlo.

new_list = [] 
for item in old_list: 
    new_list.append(item[1]) 

Esto utiliza:

  1. Al declarar una variable para hacer referencia a una lista vacía.
  2. A para bucle.
  3. Llamando al método append en una lista.

Si alguien está tratando de aprender un idioma y no puede juntar estas piezas básicas por sí mismos, entonces tienen que vista como un ejercicio y hacerlo por sí mismos, incluso si se lleva a veinte horas.

Uno tiene que aprender a pensar en lo que uno quiere y comparar eso con las herramientas disponibles . Cada elemento en mi segunda respuesta debe ser cubierto en un tutorial básico. No puede aprender a programar sin leer un.

Cuestiones relacionadas