我有一个元素列表,我想按值删除其中一个。在 Python 中,这将是l = ["apples", "oranges", "melon"]l.remove("melon")print(l) # ["apples", "orange"]Go 中的等价物是什么?我发现了一个按索引删除元素的切片技巧,但它的可读性不是很好,仍然需要我手动查找索引并且仅适用于单个项目类型:func remove(l []string, item string) { for i, other := range l { if other == item { return append(l[:i], l[i+1:]...) } }}有list.List结构,但它不是通用的,因此需要使用大量的类型转换。从列表中删除元素的惯用方法是什么?
1 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
从列表中删除元素的惯用方法是像您在示例中所做的那样循环遍历它。从切片中按值删除元素在您的程序中不应该太常见,因为它是一种O(n)操作,并且语言中有更好的数据结构。因此,Go 没有为切片提供内置的删除功能。
如果您发现自己经常使用按值移除,请考虑使用集合代替移除和添加元素O(1)同时仍可迭代。
set := map[string]bool{"apples":true, "oranges":true, "melon":true}
delete(set,"melon") // is O(1)
- 1 回答
- 0 关注
- 389 浏览
添加回答
举报
0/150
提交
取消