Rozumiem, że somelist[len(somelist)]
nie może uzyskać dostępu do indeksu znajdującego się poza zdefiniowaną listą - ma to sens.Dlaczego somelist [len (somelist)] generuje IndexError, ale nie somelist [len (somelist):]?
Ale dlaczego więc Python pozwala na wykonanie somelist[len(somelist):]
?
mam nawet przeczytać, że somelist[len(somelist):] = [1]
jest równoważna somelist.append(1)
ale dlaczego notacja plaster zmienia to faktu, że wskaźnik „DŁ (jakaśLista)” jest wciąż poza zasięgiem liście?
OK, to wyjaśnia, dlaczego zwrócono pustą listę (jak wskazali inni). Ale dlaczego 'somelist [len (somelist):] = [1]' pozwala ci dołączyć 1 do somelist? Czy nie jest odpowiednikiem poprzedniego polecenia tylko '[] = [1]'? Przepraszam, nie próbuję być gęsty. –
Jeśli 'i'> =' j', plasterek jest pusty (obecnie nie ma żadnych elementów), ale nie jest pustym obiektem listy; nadal jest to kawałek rozpoczynający się od 'i', a przypisanie do niego listy usuwa jego bieżące pozycje (nie ma żadnych) z listy i wstawia pozycje na przypisanej liście w pozycji' i'. – rakslice
Załóżmy na przykład, że ustawiłem 'x = range (5)', a następnie przypisuję plaster 'x [3: 2] = [8,7,6]', 'x' będzie teraz' [0, 1, 2, 8, 7, 6, 3, 4] ". To ta sama sytuacja; nie ma nic szczególnego w przydziale plasterków w przypadku 'i' =' len (s) '. – rakslice