当前位置: 首页 > 面试题库 >

Python-从字符串列表中删除另一个元素的子字符串中的任何元素

韩鸿
2023-03-14
问题内容

因此,从字符串列表开始,如下所示

string_list = [“休息”,“休息”,“看”,“看”,“它”,“吐”]

我想从列表中删除作为另一个元素的子字符串的任何元素,例如给出结果…

string_list = [“休息”,“看上去”,“吐”]

我有一些实现此目的的代码,但是它很丑陋,而且可能不必要地复杂。有没有一种简单的方法可以在Python中做到这一点?


问题答案:

第一个构建块:子字符串。

您可以in用来检查:

>>> 'rest' in 'resting'
True
>>> 'sing' in 'resting'
False

接下来,我们将选择创建新列表的简单方法。我们将一个接一个地添加项目到新列表中,检查它们是否是子字符串。

def substringSieve(string_list):
    out = []
    for s in string_list:
        if not any([s in r for r in string_list if s != r]):
            out.append(s)
    return out

您可以通过排序以减少比较次数来加快速度(毕竟,较长的字符串永远不能是较短/等长字符串的子字符串):

def substringSieve(string_list):
    string_list.sort(key=html" target="_blank">lambda s: len(s), reverse=True)
    out = []
    for s in string_list:
        if not any([s in o for o in out]):
            out.append(s)
    return out


 类似资料:
  • 问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j

  • 问题内容: 可以说我有这个单词列表: 比我有文字 是否有匹配stopWords并在忽略大小写时将其删除的方法;像这样的地方?: 结果: 如果您了解正则表达式,效果很好,但我真的更喜欢像Commons解决方案这样的东西,它更注重性能。 顺便说一句,现在我正在使用此通用方法,该方法缺少适当的不区分大小写的处理: 问题答案: 这是不使用正则表达式的解决方案。我认为它不如我的其他答案,因为它更长且不清楚,

  • 问题内容: 我必须采用以下形式的大量单词: 然后使用strip功能,将其转换为: 我以为我写的东西行得通,但是我不断收到错误消息: “’list’对象没有属性’strip’” 这是我尝试的代码: 问题答案:

  • 问题内容: 我想从python中的字符串列表中删除所有空字符串。 我的想法如下: 有没有更多的Python方式可以做到这一点? 问题答案: 我会用: Python 3从返回一个迭代器,因此应包装在对的调用中

  • 本文向大家介绍如何从Python的字符串列表中删除空字符串?,包括了如何从Python的字符串列表中删除空字符串?的使用技巧和注意事项,需要的朋友参考一下 您可以使用过滤器过滤掉空字符串。filter的第一个参数是lambda,它将告诉您字符串是否为空。您可以将此lambda传递为None,bool,len或检查字符串是否为空的函数。您可以通过以下几种方式进行检查: 请单击下面的链接以查看带有简单

  • 我有一个字符串元素列表,我想删除3个值,它们是,,和。 我尝试了以下代码,但操作无效: 我想要的最终结果将是一个没有字符串值的列表,,和。