枚举,打印上一个
Enumerate, print previous
我有一本看起来像这样的字典:
{'NM_014043': [(0, 34), (13176, 13268), (18191, 18386), (22352, 22455), (25881, 25988), (26189, 26300)],
和一个包含仓位的文件,例如:
isoform pos_rein
NM_014043 13177
我的脚本如下所示:
import csv
with open('splicing_reinitialized.txt') as f:
reader = csv.DictReader(f,delimiter="\t")
for row in reader:
pos = row['pos_rein']
name = row['isoform']
ppos1 = int(pos)
if name in exons:
y = exons[name]
for i, (low,high) in enumerate(exons[name]):
if low -3 <= ppos1 <= high + 6:
exonnumber = i+1
values = (low,high)
print values
我的问题是我的 values 变量打印了它关联的当前数字集(在本例中为 (13176, 13268)),但我想做的是打印之前的数字 (0, 34)该职位关联的号码。反正有没有容易做这样的事情?
只在循环中存储当前数字; next 迭代它们将是以前的值,直到您再次分配:
previous = None
for i, (low,high) in enumerate(exons[name]):
if low -3 <= ppos1 <= high + 6:
exonnumber = i+1
print previous
previous = low, high
像这样?
previous_values = exons[name][i-1]
请注意,Martijn 的解决方案更优雅地处理第一个值(previous == None
而不是必须检查 i==0
)。
首先你可以改变这行(更透明):
y = exons[name]
for i, (low,high) in enumerate(y)
然后您将获得带有 y[i-1] 的前一个元素以供进一步处理和打印,例如:
print y[i-1]
我有一本看起来像这样的字典:
{'NM_014043': [(0, 34), (13176, 13268), (18191, 18386), (22352, 22455), (25881, 25988), (26189, 26300)],
和一个包含仓位的文件,例如:
isoform pos_rein
NM_014043 13177
我的脚本如下所示:
import csv
with open('splicing_reinitialized.txt') as f:
reader = csv.DictReader(f,delimiter="\t")
for row in reader:
pos = row['pos_rein']
name = row['isoform']
ppos1 = int(pos)
if name in exons:
y = exons[name]
for i, (low,high) in enumerate(exons[name]):
if low -3 <= ppos1 <= high + 6:
exonnumber = i+1
values = (low,high)
print values
我的问题是我的 values 变量打印了它关联的当前数字集(在本例中为 (13176, 13268)),但我想做的是打印之前的数字 (0, 34)该职位关联的号码。反正有没有容易做这样的事情?
只在循环中存储当前数字; next 迭代它们将是以前的值,直到您再次分配:
previous = None
for i, (low,high) in enumerate(exons[name]):
if low -3 <= ppos1 <= high + 6:
exonnumber = i+1
print previous
previous = low, high
像这样?
previous_values = exons[name][i-1]
请注意,Martijn 的解决方案更优雅地处理第一个值(previous == None
而不是必须检查 i==0
)。
首先你可以改变这行(更透明):
y = exons[name]
for i, (low,high) in enumerate(y)
然后您将获得带有 y[i-1] 的前一个元素以供进一步处理和打印,例如:
print y[i-1]