【问题标题】:if Element in List contains a word | Python如果 List 中的元素包含一个单词 | Python
【发布时间】:2021-06-28 16:19:11
【问题描述】:

假设我有一个清单:

my_list = ["A", "B", "haha_test_haha", "C"]

我想删除所有包含子字符串 test 的元素。

输出:

my_list = ["A", "B", "C"]

我一直在尝试列表推导,但没有成功。这将是理想的解决方案。

注意:我只需要删除test。不是要删除的单词列表。


我的尝试:

my_list = ['A', 'B', 'C', 'C', 'ahahtestaagaga']

my_list = [remove for e in my_list if e.substring('test')]

print([sa for sa in a if not any(sb in sa for sb in b)])

【问题讨论】:

  • 请显示您尝试的列表理解。并解释发生了什么。显示一些输出并解释你希望你的代码做些什么不同的事情。
  • 我会追加发帖尝试。很抱歉投反对票。忘记最小代码示例
  • e.substring('test')?你为什么要使用e.substring?您是否在问如何检查一个字符串是否是另一个字符串的子字符串?你的尝试真的没有任何意义。
  • @juanpa.arrivillaga 诚然,我不确定我要使用什么。我想要的解决方案是一个列表理解,它已经提供了。 'not in' 意味着更少的功能使用,这对正在学习的我来说非常棒。

标签: python string list substring list-comprehension


【解决方案1】:

想想它看起来像一个 for 循环,所以为了示例,让我们构建一个新列表(即使它效率低下),您想要捕获没有“test”作为子字符串:

new_list = []
for x in my_list:
    if "test" not in x:
        new_list.append(x)

那么这看起来像一个理解?

my_list = [x for x in my_list if "test" not in x]

【讨论】:

  • for 循环不正确。试试["A", "B", "test_foo", "haha_test_haha", "C"]。它也不必要地低效
  • 你的循环根本不等同于列表理解。
  • @juanpa.arrivillaga 你说得对,很好。我试图提供一个 for 循环,以便 OP 可以更好地对其进行可视化,但由于它不起作用,我已将其删除并添加了一个更好的示例。谢谢
【解决方案2】:
my_list = [word for word in my_list if 'test' not in word]

【讨论】:

  • 虽然此代码可以回答问题,但提供有关 如何 和/或 为什么 解决问题的附加上下文将改善答案的长期价值。
猜你喜欢
  • 2016-11-11
  • 2016-12-14
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
相关资源
最近更新 更多