Jak mogę utworzyć odpowiednik Pythona dla pdtolist z Pop-11?Dynamiczna lista, która automatycznie rozwija się
Załóżmy, że mam generator o nazwie g, który zwraca (powiedzmy) liczby całkowite po jednym na raz. Chciałbym utworzyć listę a, która rośnie automatycznie, gdy pytam o wartości poza bieżącym końcem listy. Na przykład:
print a # => [ 0, 1, 2, g]
print a[0] # => 0
print a[1] # => 1
print a[2] # => 2
# (obvious enough up to here)
print a[6] # => 6
print a # => [ 0, 1, 2, 3, 4, 5, 6, g]
# list has automatically expanded
a = a[4:] # discard some previous values
print a # => [ 4, 5, 6, g]
print a[0] # => 4
Terminologia - przewidywanie prawdopodobnego nieporozumień: lista jest „dynamiczna tablica”, ale to nie to, co mam na myśli; Chciałbym "listy dynamicznej" w bardziej abstrakcyjnym znaczeniu.
Aby lepiej wytłumaczyć motywację, załóżmy, że masz 999999999 przedmiotów do przetworzenia. Próba dopasowania wszystkich do pamięci (na normalnej liście) naraz byłaby wyzwaniem. Generator rozwiązuje tę część problemu, przedstawiając je pojedynczo; każdy tworzony na żądanie lub czytany indywidualnie z dysku. Ale przypuśćmy, że podczas przetwarzania chcesz odwoływać się do ostatnich wartości, a nie tylko do bieżących? Możesz zapamiętać ostatnie (powiedzmy) dziesięć wartości na osobnej liście. Ale lista dynamiczna jest lepsza, ponieważ zapamiętuje je automatycznie.
Zastępuje metodę '__getitem__' listy w celu przechwycenia" IndexError ". –
Masz więc listę 'L' i wykonaj' L [999999999] '- lista powinna stać się tą długością? –
Tak, w zasadzie. Zapomnij programistę! –