首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从两个列表中删除一个元素

从两个列表中删除一个元素
EN

Stack Overflow用户
提问于 2022-09-30 17:37:39
回答 4查看 81关注 0票数 0

我有list_a和list_b,这两个列表都有一个顺序的项目。

每次在list_b中遇到0时,我都希望从list_a和list_b中删除与该索引相关的条目。我不知道该怎么做。

代码语言:javascript
运行
复制
# Before modification
list_a = [ '2019', '2020', '2021', '2022', '2023' ]
list_b = [  40,     0,      30,    0,       9 ]

#After modification
list_a = [ '2019', '2021', '2023' ]
list_b = [ 40,      30,     9 ]

知道怎么处理这个问题吗?

EN

回答 4

Stack Overflow用户

发布于 2022-09-30 21:01:20

itertools.compress过滤器的良好用例

代码语言:javascript
运行
复制
list_a[:] = compress(list_a, list_b)
list_b[:] = filter(None, list_b)

在网上试试!

票数 1
EN

Stack Overflow用户

发布于 2022-09-30 17:54:15

大概有100种方法可以做到这一点,我相信你会得到不同的回应。如果你有兴趣学这个,你应该试试.

  1. 在索引上使用for-循环。在循环之前,创建两个新的列表,如list_a_newlist_b_new,然后使用for循环遍历原始list_b的索引。测试你拿出来的物体。使用条件语句。如果对象不是零,则在相同索引位置从原始列表中获取项,并通过append()将其添加到两个新结果中。
  2. 对两个新列表使用列表理解,并在其中使用enumerate(list_b)获取相同类型的信息,并查看是否可以对这两个新列表进行列表理解。
  3. 做个“面具”。numpy可以这样做,也可以自己做,也许在list_b上再进行一次列表理解,用[False, True, False, True, ...]这样的布尔人制作一个掩码,使用该掩码作为另一个列表理解的基础,以获得new_a和new_b。

如果你被困住了,试着修改一下你的帖子!你会提高你的技能。

票数 0
EN

Stack Overflow用户

发布于 2022-09-30 18:36:02

正如其他用户所提到的,有许多方法

代码语言:javascript
运行
复制
list_a2 = [list_a[i] for i in range(len(list_b)) if list_b[i]!=0]
list_b2 = [list_b[i] for i in range(len(list_b)) if list_b[i]!=0]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73912220

复制
相关文章

相似问题

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