• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python: metody pop() / insert() / append() - działania w miejscu?

Object Storage Arubacloud
0 głosów
350 wizyt
pytanie zadane 30 października 2020 w Python przez reaktywny Nałogowiec (40,990 p.)

Czy za pomocą pop / insert / append działamy na listach w miejscu (in-place)?

>>> a = [54, 56, 34, 36, 85]
>>> id(a)
2197051630976
>>> a.pop(3)
36
>>> id(a)
2197051630976
>>> a
[54, 56, 34, 85]
>>> 

 

1 odpowiedź

+1 głos
odpowiedź 30 października 2020 przez adrian17 Ekspert (344,860 p.)
wybrane 30 października 2020 przez reaktywny
 
Najlepsza
...jak sam pokazałeś, tak. :)
komentarz 30 października 2020 przez reaktywny Nałogowiec (40,990 p.)
No tak, ale czy dla wszystkich metod (nie tylko tu wymienionych)? Gdzieś mi się obiło o uszy, ze któreś metody tworzą nową listę ( i nie chodziło o sortowanie ).
1
komentarz 30 października 2020 przez adrian17 Ekspert (344,860 p.)

Na intuicję: jeśli zwraca nowy obiekt, to... zwraca nowy obiekt. Jeśli nie zwraca nowego obiektu, to pewnie modyfikuje istniejący.

Jak piszesz sortowanie?

lista.sort()

czy

nowa = lista.sort()

?

To pierwsze, więc sort() modyfikuje listę.

komentarz 30 października 2020 przez reaktywny Nałogowiec (40,990 p.)
Wiem, że sort() tworzy nową, a sorted() - nie. Ale chodzi mi o pozostałe metody działające na listach
1
komentarz 30 października 2020 przez adrian17 Ekspert (344,860 p.)

sort() tworzy nową, a sorted() - nie

Na odwrót.

Ale chodzi mi o pozostałe metody działające na listach

Nie kojarzę z głowy żadnej (poza `copy()`, która tylko tworzy kopię). Naprawdę, najlepiej posłużyć się taką intuicją: czy kiedyś pisałeś coś takiego?

lista = [1, 2, 3]
nowy = lista.jakas_metoda()

Jeśli nie, to pewnie takiej nie ma.

komentarz 30 października 2020 przez reaktywny Nałogowiec (40,990 p.)
edycja 30 października 2020 przez reaktywny
>>> a = [5, 7, 8, 3, 5, 2, 1, 9, 12, 4]
>>> b= a.sort()
>>> id(a)
2081390914944
>>> id(b)
140717775296640
>>> c=sorted(a)
>>> c
[1, 2, 3, 4, 5, 5, 7, 8, 9, 12]
>>> id(a)
2081390914944
>>> id(c)
2081423462464
>>> 

EDIT: OK, już wiem gdzie popełniłem błąd :)

1
komentarz 30 października 2020 przez adrian17 Ekspert (344,860 p.)
Zrób `print(b)`, zobacz czy `b` w ogóle jest listą ;)
komentarz 30 października 2020 przez reaktywny Nałogowiec (40,990 p.)

Tak :) Tzn. Nie :)

Wiem, dopiero później zauważyłem.

Dzięki za wyprowadzenie z błędu i pozostałe uwagi/ sugestie!

Podobne pytania

0 głosów
4 odpowiedzi 2,429 wizyt
pytanie zadane 14 lutego 2018 w Python przez 1mSnajper Początkujący (300 p.)
0 głosów
1 odpowiedź 135 wizyt
pytanie zadane 9 kwietnia 2017 w Python przez Gdzieniegdzie Nowicjusz (120 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 24 października 2019 w JavaScript przez kordix Gaduła (3,910 p.)

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...