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()
我想通过学生编号删除其中一名学生的学生编号和分数。我写道:
n=int(input("enter #:"))
for c in y:
if c.stno==n:
y.remove(c.stno)
但显然这有问题。你知道我可以修改它以使用remove或del或pop,虽然我认为pop或del不能工作,因为没有索引吗?
答案 0 :(得分:2)
只需致电
y.remove(c)
当你执行c.stno
时,它不会存在于列表中,因为列表中的实际内容是对象本身而不是它的属性
答案 1 :(得分:1)
更改正在迭代的数组并不好。你可以试试这个:
for item in [c for c in y if s.stdno==n]:
y.remove(item)