letter = ['A','B','C','D','D','D'] for i in letter: if i == 'D': letter.remove(i) print(letter) 输出结果是
std::vector
、Rust 的 Vec
、Go 的 slice、Java 的 ArrayList
…for (size_t i = 0; i < v.size(); ++i) if (v[i] == 'D') v.erase(v.begin()+i); // 同样会漏
如果你换成 ArrayList(可变长,底层同样是连续数组),照样会塌缩: java 复制 List<String> list = new ArrayList<>(Arrays.asList("A","B","C","D","D","D")); for (int i = 0; i < list.size(); i++) if ("D".equals(list.get(i))) list.remove(i); // 删后 size--,后续元素前移,i++ 会跳过一位 System.out.println(list); // [A, B, C, D] —— 剩一个 D 现象与 Python 完全一致。