gpt4 book ai didi

python - 给定切片列表,如何按它们拆分序列?

转载 作者:太空狗 更新时间:2023-10-29 18:05:08 24 4
gpt4 key购买 nike

给定切片列表,我如何根据它们分离序列?

我有很长的氨基酸字符串,我想根据列表中的开始-停止值进行拆分。一个例子可能是最清楚的解释方式:

str = "MSEPAGDVRQNPCGSKAC"
split_points = [[1,3], [7,10], [12,13]]

output >> ['M', '(SEP)', 'AGD', '(VRQN)', 'P', '(CG)', 'SKAC']

额外的括号是为了显示从 split_points 列表中选择了哪些元素。我不希望起点和终点重叠。

我有很多可行的想法,但似乎效率极低(代码长度方面),而且似乎必须有一种很好的 pythonic 方式来做到这一点。

最佳答案

拆分字符串的奇怪方式:

def splitter( s, points ):
c = 0
for x,y in points:
yield s[c:x]
yield "(%s)" % s[x:y+1]
c=y+1
yield s[c:]

print list(splitter(str, split_points))
# => ['M', '(SEP)', 'AGD', '(VRQN)', 'P', '(CG)', 'SKAC']

# if some start and endpoints are the same remove empty strings.
print list(x for x in splitter(str, split_points) if x != '')

关于python - 给定切片列表,如何按它们拆分序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com