gpt4 book ai didi

python - 用python中字符串中的索引替换字符列表

转载 作者:行者123 更新时间:2023-12-03 13:59:35 29 4
gpt4 key购买 nike

我有一个坐标列表:

coordinates = [[1,5], [10,15], [25, 35]]
我有一个字符串如下:
line = 'ATCACGTGTGTGTACACGTACGTGTGNGTNGTTGAGTGKWSGTGAAAAAKCT'
我想替换 coordinates 中成对指示的间隔作为开始和结束字符 'N' .
我能想到的唯一方法如下:
for element in coordinates:
length = element[1] - element[0]
line = line.replace(line[element[0]:element[1]], 'N'*length)
所需的输出是:
line = 'ANNNNGTGTGNNNNNACGTACGTGTNNNNNNNNNNGTGKWSGTGAAAAAKCT'
其中区间 [1,5), [10,15) 和 [25, 35) 被替换为 Nline .
这要求我每次都遍历坐标列表并更新我的字符串行。我想知道是否有另一种方法可以替换字符串中的间隔列表?
注:本题原解有问题。在 line.replace(line[element[0]:element[1]], 'N'*length) , replace将替换与 line[element[0]:element[1]] 中相同的所有其他字符串实例从序列和 DNA 工作人员来说,这绝对不是你想要的!但是,我保留解决方案,因为它不会干扰后续评论和讨论的流程。

最佳答案

而不是字符串连接(由于创建/销毁字符串实例而浪费),使用列表:

coordinates = [[1,5], [10,15], [25, 35]] # sorted

line = 'ATCACGTGTGTGTACACGTACGTGTGNGTNGTTGAGTGKWSGTGAAAAAKCT'

result = list(line)
# opted for exclusive end pos
for r in [range(start,end) for start,end in coordinates]:
for p in r:
result[p]='N'

res = ''.join(result)
print(res)
要得到:
ANNNNGTGTGNNNNNACGTACGTGTNNNNNNNNNNGTGKWSGTGAAAAAKCT

优化使用切片和独家 end :
for start,end in coordinates:
result[start:end] = ["N"]*(end-start)

res = ''.join(result)
print(line)
print(res)
给你你想要的输出:
ATCACGTGTGTGTACACGTACGTGTGNGTNGTTGAGTGKWSGTGAAAAAKCT 
ANNNNGTGTGNNNNNACGTACGTGTNNNNNNNNNNGTGKWSGTGAAAAAKCT

关于python - 用python中字符串中的索引替换字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63169902/

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