【问题标题】:Get string from list if that string contains substring如果该字符串包含子字符串,则从列表中获取字符串
【发布时间】:2020-03-24 05:12:23
【问题描述】:

假设我有以下数据:

l = ['abc', 'def', 'ghi']
sub = 'bc'

'bc' 将始终是列表中仅一个元素的子字符串!

还有一个像这样工作的函数:

def f(l, sub):
    return [x for x in l if sub in x][0]

所以函数将返回“abc”,因为它包含“bc”

我的问题是: 编写该函数以使其不使用列表索引的另一种方法是什么? ([0]) 有没有办法做到这一点更“漂亮”?

【问题讨论】:

  • 如果您只需要第一次出现,只需遍历l 并在找到时返回元素。 def f(l, sub): for x in l: if sub in x: return x
  • 怎么样:next(filter(lambda x: sub in x, l))
  • next((x for x in l if sub in x), None)

标签: python string list substring


【解决方案1】:

next(..) 与生成器一起使用。当它找到第一个实例时,这将有点像break。当然,这是假设您的列表中肯定存在一个元素。

def f(l, sub):
    return next(x for x in l if sub in x)

【讨论】:

    【解决方案2】:

    很简单:

    next(x for x in l if sub in x)
    

    这样您不会创建整个列表。

    【讨论】:

      【解决方案3】:
      next(x for x in iter(l) if sub in x)
      

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多