Wygląda na to, że Python miałby do tego skrót. Chcę dołączyć pozycję do listy N razy, skutecznie robiąc to:
l = []
x = 0
for i in range(100):
l.append(x)
Wydaje mi się, że powinna być do tego „zoptymalizowana” metoda, na przykład:
l.append_multiple(x, 100)
Jest tu?
l.extend([x] * 100)
że najlepiej pasowało do mojej sytuacji. Amber otrzymuje odpowiedź za to, że jest najbardziej wszechstronny. Dzięki!Odpowiedzi:
Niezmienne typy danych:
l = [0] * 100 # [0, 0, 0, 0, 0, ...] l = ['foo'] * 100 # ['foo', 'foo', 'foo', 'foo', ...]
W przypadku wartości, które są przechowywane przez odniesienie i możesz chcieć zmodyfikować je później (np. Listy podrzędne lub dykty):
l = [{} for x in range(100)]
(Powodem, dla którego pierwsza metoda jest dobrym pomysłem tylko dla wartości stałych, takich jak ints lub stringi, jest to, że przy użyciu
<list>*<number>
składni robi się tylko płytka kopia , a zatem jeśli zrobiłeś coś podobnego[{}]*100
, skończyłbyś z 100 odniesieniami do tego samego słownika - więc zmiana jednego z nich zmieniłaby je wszystkie. Ponieważ wartości typu int i string są niezmienne, nie stanowi to dla nich problemu).Jeśli chcesz dodać coś do istniejącej listy, możesz użyć
extend()
metody tej listy (w połączeniu z generowaniem listy rzeczy do dodania za pomocą powyższych technik):a = [1,2,3] b = [4,5,6] a.extend(b) # a is now [1,2,3,4,5,6]
źródło
a.extend(b*n)
gdzien
są czasy, w których chcesz powtórzyć elementy w bUżyj rozszerzenia, aby na końcu dodać tekst listy.
l.extend([x for i in range(100)])
Więcej informacji można znaleźć w dokumentacji Pythona .
źródło
Musiałem wybrać inną trasę, aby wykonać zadanie, ale na tym skończyłem.
źródło
Powtarzanie itertools w połączeniu z rozszerzaniem listy.
from itertools import repeat l = [] l.extend(repeat(x, 100))
źródło
Możesz to zrobić ze zrozumieniem listy
l = [x for i in range(10)];
źródło
l = [] x = 0 l.extend([x]*100)
źródło