2009-06-11 19 views
195

¿Cómo inicializo una lista con 10 veces un valor predeterminado en Python?Inicializar una lista con una longitud específica en Python

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

Respuesta

299

Si el "valor predeterminado" que desea es inmutable, sugerencia de @ eduffy, p. [0]*10, es lo suficientemente bueno.

Pero si usted quiere, por ejemplo, una lista de diez dict s, hacer no[{}]*10 uso - que le daría una lista con los mismos inicialmente vacías dict diez veces, no diez las distintas . En su lugar, use [{} for i in range(10)] o construcciones similares, para construir diez dict s por separado para componer su lista.

+26

o [{} para _ en el rango (10)] para evitar advertencias de pelusa –

+4

algo así como [0] * 10 no es la forma de crear la 2d lista. Si crea una lista 'l = [[0] * 10] * 10]', intente cambiar 'l [0] [0] = 100', encontrará que l [1] [0], l [2] [0] ... l [9] [0] están todos configurados en 100. Es porque '*' replica la referencia para el objeto. –

+0

Solo presiona esa. Herido con [['' para i en rango (5)] para j en rango (5)] en lugar de >>> card_strings = [[''] * 5] * 5 >>> card_strings [0] [0 ] = "Bueno, eso fue inesperado ..." – RobotHumans

134

multiplicación de la lista trabaja.

>>> [0] * 10 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
Cuestiones relacionadas