【发布时间】: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