Esto parece algo para lo que Python tendría un atajo. Quiero agregar un elemento a una lista N veces, efectivamente haciendo esto:
l = []
x = 0
for i in range(100):
l.append(x)
Me parecería que debería haber un método "optimizado" para eso, algo como:
l.append_multiple(x, 100)
¿Esta ahí?
l.extend([x] * 100)
porque encajaba mejor con mi situación. Amber recibe el crédito de respuesta por ser la más completa. ¡Gracias!Respuestas:
Para tipos de datos inmutables:
l = [0] * 100 # [0, 0, 0, 0, 0, ...] l = ['foo'] * 100 # ['foo', 'foo', 'foo', 'foo', ...]
Para valores que se almacenan por referencia y es posible que desee modificarlos más tarde (como sublistas o dictados):
l = [{} for x in range(100)]
(La razón por la que el primer método es solo una buena idea para valores constantes, como ints o strings, es porque solo se hace una copia superficial cuando se usa la
<list>*<number>
sintaxis y, por lo tanto[{}]*100
, si hicieras algo como , terminarías con 100 referencias al mismo diccionario, por lo que cambiar uno de ellos los cambiaría todos. Dado que las entradas y las cadenas son inmutables, esto no es un problema para ellos).Si desea agregar a una lista existente, puede usar el
extend()
método de esa lista (junto con la generación de una lista de cosas para agregar mediante las técnicas anteriores):a = [1,2,3] b = [4,5,6] a.extend(b) # a is now [1,2,3,4,5,6]
fuente
a.extend(b*n)
dónden
son las veces que desea repetir elementos en bUtilice extender para agregar una lista de comprensión al final.
l.extend([x for i in range(100)])
Consulte los documentos de Python para obtener más información.
fuente
Tuve que ir por otra ruta para una tarea, pero esto es lo que terminé con.
fuente
Itertools se repite combinada con la extensión de lista.
from itertools import repeat l = [] l.extend(repeat(x, 100))
fuente
Podrías hacer esto con una lista de comprensión
l = [x for i in range(10)];
fuente
l = [] x = 0 l.extend([x]*100)
fuente