Isso parece algo para o qual Python teria um atalho. Quero anexar um item a uma lista N vezes, efetivamente fazendo o seguinte:
l = []
x = 0
for i in range(100):
l.append(x)
Parece-me que deveria haver um método "otimizado" para isso, algo como:
l.append_multiple(x, 100)
Existe?
l.extend([x] * 100)
uma vez que se encaixa melhor na minha situação. Amber recebe o crédito de resposta por ser a mais abrangente. Obrigado!Respostas:
Para tipos de dados imutáveis:
l = [0] * 100 # [0, 0, 0, 0, 0, ...] l = ['foo'] * 100 # ['foo', 'foo', 'foo', 'foo', ...]
Para valores que são armazenados por referência e você pode desejar modificar mais tarde (como sublistas ou dictos):
l = [{} for x in range(100)]
(A razão pela qual o primeiro método é apenas uma boa ideia para valores constantes, como ints ou strings, é porque apenas uma cópia superficial é feita ao usar a
<list>*<number>
sintaxe e, portanto, se você fizer algo como[{}]*100
, você acabará com 100 referências para o mesmo dicionário - portanto, mudar um deles mudaria todos eles. Visto que ints e strings são imutáveis, isso não é um problema para eles.)Se você deseja adicionar a uma lista existente, você pode usar o
extend()
método dessa lista (em conjunto com a geração de uma lista de itens a serem adicionados por meio das técnicas acima):a = [1,2,3] b = [4,5,6] a.extend(b) # a is now [1,2,3,4,5,6]
fonte
a.extend(b*n)
onden
estão os horários em que você deseja repetir os elementos em bUse extend para adicionar uma lista de compreensão ao final.
l.extend([x for i in range(100)])
Veja a documentação do Python para mais informações.
fonte
Repetição de itertools combinada com extensão de lista.
from itertools import repeat l = [] l.extend(repeat(x, 100))
fonte
Eu tive que ir por outro caminho para uma atribuição, mas foi assim que acabei.
fonte
Você poderia fazer isso com uma compreensão de lista
l = [x for i in range(10)];
fonte
l = [] x = 0 l.extend([x]*100)
fonte