首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从2d列表中删除行

从2d列表中删除行
EN

Stack Overflow用户
提问于 2019-01-30 09:24:18
回答 2查看 452关注 0票数 0

我搞不懂为什么这个从列表中删除特定对的简短代码片段失败了:

代码语言:javascript
运行
复制
g = [[7, 11], [7, 8], [3, 10], [3, 8], [8, 9], [11, 10], [11, 2], 
[11, 9]]
u = 3
g_cpy = g
for e in g_cpy:
    if u == e[0]:
        g.remove(e)
print g

它不会删除条目3,8,但会删除3,10。我遗漏了什么?

EN

Stack Overflow用户

发布于 2019-10-10 21:38:33

代码语言:javascript
运行
复制
g_cpy = g

不创建列表的副本,而只创建对同一对象的引用,然后在迭代期间对其进行修改。另一个问题是,重复的remove调用在时间复杂性方面是不好的(每次调用都是O(N))。最好使用理解从头开始构建新的列表(总体线性复杂性)。您仍然可以使用该技术,并通过使用切片分配来改变原始列表:

代码语言:javascript
运行
复制
g[:] = [e for e in g if u != e[0]]
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54432072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档