Trong Java tôi có thể làm bằng cách sử dụng một Iterator
và sau đó sử dụng phương pháp .remove()
của iterator để loại bỏ các yếu tố cuối cùng được trả về bởi các iterator, như thế này:Hủy bỏ các yếu tố như bạn đi qua một danh sách bằng Python
import java.util.*;
public class ConcurrentMod {
public static void main(String[] args) {
List<String> colors = new ArrayList<String>(Arrays.asList("red", "green", "blue", "purple"));
for (Iterator<String> it = colors.iterator(); it.hasNext();) {
String color = it.next();
System.out.println(color);
if (color.equals("green"))
it.remove();
}
System.out.println("At the end, colors = " + colors);
}
}
/* Outputs:
red
green
blue
purple
At the end, colors = [red, blue, purple]
*/
Làm thế nào tôi sẽ làm điều này trong Python? Tôi không thể sửa đổi danh sách trong khi tôi lặp lại nó trong vòng lặp for vì nó khiến nội dung bị bỏ qua (xem here). Và dường như không tương đương với giao diện Iterator
của Java.
tôi tự hỏi nếu sử dụng một iterator đảo ngược có thể là một giải pháp. Bất kỳ suy nghĩ về điều này? Nó sẽ tốt hơn là tạo một bản sao của một danh sách. –
http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python Nó được yêu cầu rất nhiều ... –