首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找字符串中列表的元素

查找字符串中列表的元素
EN

Stack Overflow用户
提问于 2011-12-15 16:23:58
回答 4查看 145关注 0票数 1

我有一个字符串'RTKLOANGMSTTTS‘和一个元组列表(2,5),(8,9),它返回一个包含字母2-5和8-9的字符串,即'TKLOGM’。我是这样想的:

代码语言:javascript
运行
复制
def f(string, lst):
    for element in lst:
        if element in string:
            print string

但是它不返回任何东西吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-15 16:27:19

试试这个:

代码语言:javascript
运行
复制
def f(source, lst):
    return "".join(source[start - 1:end] for start, end in lst)

这将在lst上迭代,在每次迭代时将元组提取到startend中。然后,它将创建一个新字符串作为source字符串的片段,从start - 1end (我们使用start - 1,因为您显示1表示第一个字符,但python使用0索引,所以我们必须减去1)。最后,我们使用"".join()连接所有的字符串。

如果您使用的是不支持生成器语法的旧版本Python,请使用以下代码:

代码语言:javascript
运行
复制
def f(source, lst):
    return "".join([source[start - 1:end] for start, end in lst])

它的工作原理完全相同,但它没有使用生成器,而是显式地创建了一个被联接的列表。

票数 4
EN

Stack Overflow用户

发布于 2011-12-15 16:29:08

代码语言:javascript
运行
复制
>>> x = 'RTKLOANGMSTTTS'
>>> l = [(2,5),(8,9)]
>>> ''.join(x[s-1:e] for (s,e) in l)
'TKLOGM'
票数 2
EN

Stack Overflow用户

发布于 2011-12-15 16:29:07

我想这就是你想要的。我现在不能测试,但请尝试:

代码语言:javascript
运行
复制
def f(string, lst):
    getStr = ''
    for t in lst:
        begin, end = t
        getStr += string[begin-1:end]
    return getStr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8517072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档