我有一个字符串 'RTKLOANGMSTTTS' 和一个元组列表 [(2,5),(8,9)],它返回一个包含字母 2-5 和 8-9 的字符串,即'TKLOGM'。 我在想类似的事情:
def f(string, lst):
for element in lst:
if element in string:
print string
但是它没有返回任何东西?
请您参考如下方法:
试试这个:
def f(source, lst):
return "".join(source[start - 1:end] for start, end in lst)
这将迭代 lst,在每次迭代时将元组提取到 start 和 end 中。然后它将创建一个新字符串作为 source 字符串的切片,从 start - 1 到 end (我们使用 start - 1 因为你显示 1 表示第一个字符,但是 python 使用 0 索引,所以我们必须减去一个)。最后,我们使用 "".join() 连接所有字符串。
如果您使用不支持生成器语法的旧版本 Python,请改用它:
def f(source, lst):
return "".join([source[start - 1:end] for start, end in lst])
它的工作原理完全相同,但它没有使用生成器,而是显式地创建了一个被连接的列表。
