Nuevo en aprender Python; ¿Por qué la impresión de este bucle for es diferente cuando uso una lista por comprensión? ¿Cómo hago

CorePress2024-01-25  10

Según tengo entendido, ¿la impresión de X no debería ser la misma en ambos? la respuesta que necesito es la que proviene de la lista de comprensión, que es una nueva lista donde cada elemento es -1 de la lista original. Pero el bucle for solo da 1 elemento, tampoco sé cómo se calcula ese elemento. Imprimir x solo proporciona el último elemento de la lista. Estoy seguro de que estoy haciendo algo mal, pero no estoy seguro de cómo obtener una lista simplemente usando el bucle for. LO QUE ME CONFUNDE es que si print(x) es parte del bucle for, imprimirá los elementos de la lista deseada que necesito, pero NO en una lista, lo que significa que las matemáticas que escribí funcionan según lo previsto, ¿verdad? p>

list= [1,2,3,4,5]


#loop
x=[]
for i in list:
  x=[i-1]
print(x)

#list comprehension

x=[i-1 for i in list]
print(x)

#confusing part where this print will be the same as the comprehension but not in a list form
 x=[]
for i in list:
  x=[i-1]
  print(x)

2

Creo que querías hacer x += [i-1] en tu bucle en lugar de x = [i-1]. También tenga en cuenta que nombrar una lista es malo porque ensombrece la función de la lista y conducirá a un error muy confuso en algún momento.

- Samsagaz

27/03/2021 a las 19:16

2

Como nota, se considera mejor nunca¡Las colecciones de nombres son lo mismo que las integradas (lista, conjunto,...) ya que golpean a las integradas en ese ámbito!

- ti7

27/03/2021 a las 19:17

Lo tendré en cuenta en el futuro. Quería ser claro llamándolo "lista", pero todos aquí lo saben. Debería haberlo sabido.

- Roble

27/03/2021 a las 19:25

@Oak Consejos prácticos: en el código empresarialnombraría la lista según su contenido o propósito/función dentro del alcance. Si bien la mayoría del código educativo aplica nombres extremadamente abstractos, puedes comenzar ahora. Entrene sus habilidades para nombrar, aplique convenciones y (mejores) prácticas para que su código sea fácil de leer, por ejemplo. cambiar el nombre a números (nombre de la colección con plural 's') o num_list (forma de nombre mixto, ver notación húngara) 💡

-hc_dev

28 de marzo de 2021 a las 1:18



------------------------------------

Lo primero es que la lista es una palabra clave protegida. Deberías usar list_ al menos (esa es la convención de nomenclatura siRealmente necesito usar list como nombre).

El segundo itera elemento por elemento, e imprime cada uno de los elementos, lo que se quiere es en el bucle configurar cada uno de los elementos uno por uno, y luego imprimir x (no dentro del bucle).

list_= [1,2,3,4,5]

x=[]
for i in list_:
  x.append(i-1)
print(x)

2

1

Muchas gracias, lo olvidé por completo. Añade que es exactamente lo que me faltaba. Esperemos que estas cosas se queden grabadas en la memoria en el futuro.

- Roble

27 de marzo de 2021 a las 19:23

1

@Oak Nos diste comentarios que son útiles. ¡Por favor, convierta sus palabras de agradecimiento en acciones y vote a favor o acepte! Así premiamos y damos las gracias aquí😉

-hc_dev

28 de marzo de 2021 a las 0:56



------------------------------------

Deberías agregar algo así:

lst= [1,2,3,4,5]

#loop
x=[] 
for i in lst: 
    x.append(i-1)
print(x)
#output: [0, 1, 2, 3, 4]

#list comprehension
x=[i-1 for i in lst] 
print(x)
#output: [0, 1, 2, 3, 4]

6

respondiste dos veces, elimina la respuesta duplicada

-miquelvir

27/03/2021 a las 19:18

@miquelvir ¡Listo! Por cierto, tu respuesta (que se publicó más tarde) es idéntica a la mía.

-pakpe

27/03/2021 a las 19:22

Muchas gracias, lo olvidé por completo. Adjuntar, es exactamente lo que extrañaba.En g. Esperemos que estas cosas se queden grabadas en la memoria en el futuro.

- Roble

27/03/2021 a las 19:24

¡perfecto! al parecer estábamos escribiendo al mismo tiempo; aunque le expliqué al OP el problema con el uso de lista como nombre... pero sí, mala suerte, ambos perdimos el tiempo

-miquelvir

27/03/2021 a las 19:24

@Oak Bienvenido a Stack Overflow. La etiqueta eneste sitio es para aceptar la respuesta que satisfaga sus necesidades. Leer: stackoverflow.com/help/….

-pakpe

27/03/2021 a las 19:26

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare