如何减去相对于另一个字符串的连续字符串?

我有如下字符串列表

['ENST00000641515.2','ENSG00000186092.6','OTTHUMG00000001094.4','OTTHUMT00000003223.4','OR4F5','202','2618','UTR5','1','60','CDS','61','1041','UTR3','1042','','ENST00000335137.4','201','1054','36']

我想遍历此列表,并且如果string为'UTR5',我想互相减去之后的两个连续字符串(后面一个为后者)。减去的值应加起来,最后打印出答案。

示例: 在第一个'UTR5'之后有1和60。所以我想减去60-1。在第二个'UTR5'中它是36-1。 最终答案应打印为94

我是python的新手,有人可以推荐我一个脚本。提前致谢。原始列表很大。我给出了一个简短的版本。

myslippers 回答:如何减去相对于另一个字符串的连续字符串?

lst = ['ENST00000641515.2','ENSG00000186092.6','OTTHUMG00000001094.4','OTTHUMT00000003223.4','OR4F5','202','2618','UTR5','1','60','CDS','61','1041','UTR3','1042','','ENST00000335137.4','201','1054','36']

total = 0
for i,x in enumerate(lst):
    if lst[i] == 'UTR5':
        total += (int(lst[i + 2]) - int(lst[i + 1]))

print(total)

看看for循环中enumerate在可迭代对象上的用法。

请注意,假设索引i+1i+2是整数。

,

您可以使用numpy.argwhere

轻松地做到这一点
<layout>
,

您可以通过压缩列表的移位版本来做到这一点:

total = sum(int(c) - int(b) for a,b,c in zip(lst,lst[1:],lst[2:]) if a == "UTR5")
本文链接:https://www.f2er.com/3044216.html

大家都在问