如何在此代码中使用remove?

时间:2016-07-13 15:45:28

标签: python python-2.7 python-3.x

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不能工作,因为没有索引吗?

2 个答案:

答案 0 :(得分:2)

只需致电

y.remove(c)

当你执行c.stno时,它不会存在于列表中,因为列表中的实际内容是对象本身而不是它的属性

答案 1 :(得分:1)

更改正在迭代的数组并不好。你可以试试这个:

for item in [c for c in y if s.stdno==n]:
    y.remove(item)