Para los tipos de datos inmutables:
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
Para valores que son almacenados por referencia y es posible que desee modificar más adelante (como sub-listas o dicts):
l = [{} for x in range(100)]
(la razón por la cual el primer método sólo es una buena idea para los valores constantes, lik etsts o strings, es porque solo hace una copia superficial al usar la sintaxis <list>*<number>
, y por lo tanto, si hiciera algo como [{}]*100
, terminaría con 100 referencias al mismo diccionario, por lo que cambiar uno de ellos los cambiaría a todos . Como los enteros y las cadenas son inmutables, esto no es un problema para ellos.)
Si desea agregar a una lista existente, puede usar el método extend()
de esa lista (junto con la generación de una lista de cosas para agregar a través de las técnicas anteriores):
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
Terminé yendo con 'l.extend ([x] * 100)' porque se ajustaba mejor a mi situación. Amber obtiene el crédito de respuesta por ser el más completo. ¡Gracias! – Toji
Asegúrese de comprender la semántica de referencia de Python antes de usar esto para algo no trivial. Las x adjuntas a l son todas iguales x, por lo que mutar a una de ellas las afecta a todas (todas ellas, referidas a 100 veces). –
Para aclarar: lo estoy usando para enteros, por lo que mi uso es seguro. – Toji