Wie kann ich für diesen Code entfernen?

class student(object): def student(self): self.name=input("enter name:") self.stno=int(input("enter stno:")) self.score=int(input("enter score:")) def dis(self): print("name:",self.name,"stno:",self.stno,"score:",self.score) def stno(self): return self.stno def name(self): return self.name def score(self): return self.score y=[] j=0 while(j<3): a=student() a.student() y.append(a) j+=1 for st in y: st.dis() n=int(input("enter #:")) for c in y: if c.stno==n: y.remove(c.stno) for st in y: st.dis() 

Ich möchte einen der Schüler mit seiner Schülerzahl und Gäste über die Schülerzahl entfernen. Ich schreibe:

 n=int(input("enter #:")) for c in y: if c.stno==n: y.remove(c.stno) 

Aber offensichtlich gibt es ein Problem damit. Weißt du, kann ich das ändern, um zu entfernen oder del oder Pop, obwohl ich denke, Pop oder del kann nicht funktionierbar sein, da es keinen Index gibt?

2 Solutions collect form web for “Wie kann ich für diesen Code entfernen?”

Ruf einfach an

y.remove(c)

Wenn du c.stno , wird es in der Liste nicht existieren, denn was eigentlich in der Liste ist, ist das Objekt selbst nicht die Attribute

Es ist nicht gut, das Array zu ändern, das Sie iterieren. Du kannst das versuchen:

 for item in [c for c in y if s.stdno==n]: y.remove(item) 
  • Wie berechnen Sie die Korrelation zwischen allen Spalten in einem DataFrame und allen Spalten in einem anderen DataFrame?
  • Konvertieren von int in Bytes in Python 3
  • Kodierung von Headern in MIMEText
  • Wie bekomme ich die physikalische Schnittstellen-IP-Adresse von einer Schnittstelle
  • Warum gibt die Druckfunktion kein Typ zurück?
  • Python 3 Zeitgesteuerter Eingang
  • Testen von Regexen in Python mit py.test
  • Lesen von Token aus einer Datei in python 3.x
  • Python ist die beste Programmiersprache der Welt.