Inicializar una lista a una longitud específica en Python [duplicate]

2 minutos de lectura

avatar de usuario
Janusz

¿Cómo inicializo una lista con 10 veces un valor predeterminado en Python?

Estoy buscando una forma atractiva de inicializar una lista vacía con un rango específico. Así que haga una lista que contenga 10 ceros o algo así para asegurarse de que mi lista tenga una longitud específica.

Si el “valor predeterminado” que desea es inmutable, la sugerencia de @ eduffy, por ejemplo [0]*10es bastante bueno.

Pero si quieres, digamos, una lista de diez dicts, hacer no usar [{}]*10 — eso le daría una lista con los mismo inicialmente vacío dict diez veces, no diez distintos. Más bien, usa [{} for i in range(10)] o construcciones similares, para construir diez dicts para hacer su lista.

  • o [{} for _ in range(10)] para evitar advertencias de pelusa

    – Martín Konecny

    3 de mayo de 2013 a las 1:22

  • algo como [0] * 10 no es la forma de crear una lista 2d. Si creas una lista l = [[0]*10]*10]intenta cambiar l[0][0] = 100encontrarás que l[1][0]yo[2][0] … yo[9][0] están todos configurados en 100. Es porque * replica la referencia para el objeto.

    – Juan Wu

    29/09/2014 a las 13:31

  • Solo dale a ese. terminó con [[” for i in range(5)] for j in range(5)]en lugar de >>> card_strings = [[”]*5]*5 >>> cadenas_cartas[0][0] = “Bueno, eso fue inesperado…”

    – RobotHumanos

    19 de septiembre de 2015 a las 9:18

la multiplicación de listas funciona.

>>> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

avatar de usuario
Pejván

En una charla sobre los componentes internos de los contenedores centrales en Python en PyCon 2012, Raymond Hettinger sugiere usar [None] * n para preasignar la longitud que desee.

Diapositivas disponibles como PPT o a través de Google

Toda la plataforma de diapositivas es bastante interesante. los La presentación está disponible en YouTube.pero no agrega mucho a las diapositivas.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad