【问题标题】:Find words including ":" in a list with Python使用 Python 在列表中查找包含“:”的单词
【发布时间】:2018-08-18 08:59:25
【问题描述】:

我有一个包含一些单词的列表。我想过滤掉包括“:”在内的单词。 如何编写代码将它们与其他单词分开?

【问题讨论】:

  • filter(lambda s: ":" not in s, xs)
  • 尝试查看正则表达式以识别包含“:”的单词。特别检查 Python “re” 包。
  • @Alexis.Rolland 虽然可以使用正则表达式执行此操作,但您可以简单地检查字符串是否包含带有substr in str 的子字符串,它更短、更易于阅读并且执行速度更快。
  • @NiklasMertsch,你是对的......如果他有一个像['word:1', 'word:2', 'word:3'] 这样的干净的 Python 列表,那么做for word in list: if ':' in word... 会更简单,但是这个问题对我来说不是很清楚他说“我有一个包含一些单词的列表......”。我在想他可能需要隔离单词,我猜这是正则表达式可能有用的地方
  • 谢谢大家。 @N.Wouda 给我发了一个关于懒惰的链接。我读了它,现在我不知何故感到羞耻。但是当我问这个问题时,我执行了很多任务并且尝试了太多。因此我很累,当我遇到最后一个错误时,我很生气,没有足够的注意力立即问了这个问题。我写了几行,只是犯了一个错误。我错误地调用了一个变量。 Jimmy Carlos 的回答帮助我轻松解决了这个问题。我向所有试图再次帮助我的人道歉并感谢他们。这是我的第一个问题,以后我会努力变得更专业。

标签: python list list-comprehension


【解决方案1】:

我会使用列表推导。这可以根据是否通过 if 语句过滤列表的所有元素。

代码:

my_list = ["Apples","Bananas","Colons:","CSI:NY","Egbert"]
with_colons = [a for a in my_list if ":" in a]
without_colons = [a for a in my_list if ":" not in a]
print(with_colons)
print(without_colons)

输出:

['Colons:', 'CSI:NY']
['Apples', 'Bananas', 'Egbert']

【讨论】:

    【解决方案2】:

    过滤这个单词列表有两种可能:

    list_of_words = ['word_without_colon', 'word:with:colon']
    
    1. filter-函数:

    words_with_colons = list(filter(lambda word: ':' in word, list_of_words))

    1. 列表推导:

    words_with_colons = [word for word in list_of_words if ':' in word]

    Python 的创建者 Guido van Rossum 建议使用列表推导,甚至 planned to remove the filter-function completely in Python 3

    我认为删除filter()map() 是没有争议的; filter(P, S) 几乎总是写得更清楚[x for x in S if P(x)],这有一个巨大的优势,最常见的用法涉及比较谓词,例如x==42,并为此定义一个 lambda 只需要读者付出更多的努力(加上 lambda 比列表理解慢)。 map(F, S) 更是如此,它变成了[F(x) for x in S]

    【讨论】:

      【解决方案3】:

      使用filter()

      a = ['hello', 'foo:bar', 'baz']
      b = list(filter(lambda x: ':' not in x, a))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 2016-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多