2012-02-04 37 views
5

Tôi có một danh sách để lưu các đối tượng được tạo bởi một lớp cụ thể.OOP python - loại bỏ cá thể lớp khỏi danh sách

Tôi muốn biết, vì tôi không thể giải quyết vấn đề này, làm cách nào để xóa một phiên bản của lớp học khỏi danh sách?

Điều này sẽ xảy ra dựa trên việc biết một thuộc tính của đối tượng.

+1

Lần sau khi bạn nên thêm một ví dụ về mã mà bạn không thể làm việc, cũng chấp nhận câu trả lời giúp bạn giải quyết vấn đề và bỏ phiếu cho những người hữu ích. –

+0

Ok cảm ơn bạn. :) –

+0

Bạn được chào đón, bạn cũng có thể muốn làm theo một số lời khuyên trong [Hướng dẫn về các câu hỏi và câu trả lời] theo phong cách này (http://meta.stackexchange.com/a/18616/177799). Một câu hỏi hay hơn dẫn đến câu trả lời tốt hơn. –

Trả lời

11

Duyệt qua danh sách, tìm ra đối tượng và vị trí của nó, sau đó xóa nó:

for i, o in enumerate(obj_list): 
    if o.attr == known_value: 
     del obj_list[i] 
     break 
+1

Có lỗi đánh máy: '=' thay vì '=='. –

+0

@RikPoggi Cảm ơn. Sửa chữa nó. – WolframH

3

Bạn có thể sử dụng một danh sách hiểu:

thelist = [item for item in thelist if item.attribute != somevalue] 

này sẽ loại bỏ tất cả mục có item.attribute == somevalue.

Nếu bạn chỉ muốn xóa một mục mục đó, hãy sử dụng WolframH's solution.

+0

Sử dụng chức năng 'bộ lọc' cũng sẽ hoạt động đúng không? – Divya

+0

Một bộ lọc sẽ hoạt động như danh sách hiểu, nhưng thường gọi là 'bộ lọc' là chậm hơn so với một danh sách hiểu. – unutbu

1

Bạn có thể lưu trữ chúng trong một dict và loại bỏ chúng bằng tên

di = {"test" : my_instance()} 
del di['test'] 
Các vấn đề liên quan