2016-11-20 59 views
0

鑑於刪除給定字段值的列表對象python

這不是簡單地從列表中刪除元素;其去除,但通過使用字段值

philani = Student(20, "Philani Sithole", "Male", [64,65]) 
sarah = Student(19, "Sarah Jones", "Female", [82,58]) 
fabian = Student(50, "Fabian Hamza", "Male", [50,52]) 


students = [philani, sarah, fabian] 

我怎樣才能把學生名單命名爲「費邊·哈姆扎」

期望的結果對象的Fabian:

students = [philani, sarah] 

它試過這種

name = "Fabian Hamza" 
for i in xrange(len(students)): 
    if hasattr(students[i], name): 
     students.pop(i) 

但它不起作用

+0

[從Python中的列表中刪除元素]的可能的複製( http://stackoverflow.com/questions/27443627/removing-elements-from-a-list-in-python) –

回答

1

您可以使用列表理解來做到這一點:

[s for s in students if s.name != 'Fabian Hamza'] 

如果你想只是名稱的列表,請嘗試:

[s.name for s in students if s.name != 'Fabian Hamza'] 
+0

我已經嘗試過,但它仍然沒有工作 - 我有點新,你可以嘗試闡述更多...? – Developer

+0

它真的有用! – Developer

+0

你可以用簡單的for循環來做同樣的事情,但列表理解是一個非常有趣的功能,你應該看看。 – ettanany