我有一个字符串'RTKLOANGMSTTTS‘和一个元组列表(2,5),(8,9),它返回一个包含字母2-5和8-9的字符串,即'TKLOGM’。我是这样想的:
def f(string, lst):
for element in lst:
if element in string:
print string但是它不返回任何东西吗?
发布于 2011-12-15 16:27:19
试试这个:
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索引,所以我们必须减去1)。最后,我们使用"".join()连接所有的字符串。
如果您使用的是不支持生成器语法的旧版本Python,请使用以下代码:
def f(source, lst):
return "".join([source[start - 1:end] for start, end in lst])它的工作原理完全相同,但它没有使用生成器,而是显式地创建了一个被联接的列表。
发布于 2011-12-15 16:29:08
>>> x = 'RTKLOANGMSTTTS'
>>> l = [(2,5),(8,9)]
>>> ''.join(x[s-1:e] for (s,e) in l)
'TKLOGM'发布于 2011-12-15 16:29:07
我想这就是你想要的。我现在不能测试,但请尝试:
def f(string, lst):
getStr = ''
for t in lst:
begin, end = t
getStr += string[begin-1:end]
return getStrhttps://stackoverflow.com/questions/8517072
复制相似问题