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

Python - usuwanie elementu z listy w konkretnym obiekcie

+1 głos
744 wizyt
pytanie zadane 5 października 2021 w Python przez Bartłomiej Sikora Użytkownik (750 p.)

Witam! Zaczynam przygodę z Pythonem i napotkałem na taki problem:

class Class():
    data = ['a', 'b']


array = []
array.append(Class())
array.append(Class())
array.append(Class())

print(str(array[0].data))

array[0].data.remove('a')

print(str(array[0].data))
print(str(array[1].data))
print(str(array[2].data))

Chcę usunąć wartość 'a' z listy tylko obiektu o indeksie 0 w tablicy 'array', ale linijka z poleceniem 'remove' usuwa tę wartość także w pozostałych. Efekt działania kodu:

['a', 'b']
['b']
['b']
['b']

Jak usunąć tę wartość z jednego obiektu w tablicy? Z góry dziękuje :D

2 odpowiedzi

+1 głos
odpowiedź 5 października 2021 przez adrian17 Mentor (355,240 p.)
edycja 5 października 2021 przez adrian17
class Class():
    data = ['a', 'b']

Bo tak jak to napisałeś, to `data` jest cechą klasy, nie instancji klasy.

Jak chcesz żeby każdy obiekt miał własny `data`, to powinieneś ustawić pola w konstruktorze:

class Class:
    def __init__(self):
        self.data = ['a', 'b']

 

0 głosów
odpowiedź 5 października 2021 przez manjaro Nałogowiec (37,420 p.)

Możesz użyć

array[0].data = array[0].data[1:]

zamiast

array[0].data.remove('a')

I będzie OK. Ale lepszym rozwiązaniem jest zrobić tak jak proponuje Adrian.

Podobne pytania

0 głosów
2 odpowiedzi 765 wizyt
pytanie zadane 15 stycznia 2019 w Python przez RadziSzop Nowicjusz (240 p.)
0 głosów
4 odpowiedzi 2,515 wizyt
pytanie zadane 10 listopada 2018 w Python przez adam11 Użytkownik (570 p.)
0 głosów
1 odpowiedź 1,452 wizyt
pytanie zadane 22 lutego 2018 w Python przez NieMaJuzNazw Użytkownik (890 p.)

93,787 zapytań

142,750 odpowiedzi

323,421 komentarzy

63,392 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...