我正在尝试比较两个列表并找到该位置并改变该位置的角色.例如,这些是两个列表:
list1 = ['I', 'C', 'A', 'N', 'R', 'U', 'N']
list2 = ['I', 'K', 'A', 'N', 'R', 'U', 'T']
Run Code Online (Sandbox Code Playgroud)
我希望能够输出位置并更改两个列表中的差异.如您所见,一个字母可以在不同的索引位置重复多次.这是我尝试过的代码,但我似乎无法准确地打印出第二个位置.
for indexing in range(0, len(list1)):
if list1[indexing] != list2[indexing]:
dontuseindex = indexing
poschange = indexing + 1
changecharacter = list2[indexing]
for indexingagain in range(dontuseindex + 1, len(list1)):
if list1[indexingagain] != list2[indexingagain]:
secondposchange = indexingagain + 1
secondchangecharacter = list2[indexingagain]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决这个问题或对我的代码有任何建议?
我的预期输出是:
2 K
7 T
Run Code Online (Sandbox Code Playgroud) 我创建了一个列表(已排序):
indexlist = [0, 7, 8, 12, 19, 25, 26, 27, 29, 30, 31, 33]
Run Code Online (Sandbox Code Playgroud)
我想从这个列表中提取至少相距五个的数字并将它们输入到另一个列表中.这有点令人困惑.这是我想要输出的一个例子:
outlist = [0, 7, 19, 25, 31]
Run Code Online (Sandbox Code Playgroud)
如您所见,这些数字都不在5之内.
我试过这个方法:
for index2 in range(0, len(indexlist) - 1):
if indexlist[index2 + 1] > indexlist[index2] + 5:
outlist.append(indexlist[index2])
Run Code Online (Sandbox Code Playgroud)
但是,这给了我这个输出:
outlist = [0, 12, 19]
Run Code Online (Sandbox Code Playgroud)
当然,这些数字至少有5个,但是,我错过了一些必要的值.
关于如何完成这项任务的任何想法?
我有一个字典,看起来像这样:
{'NM_100': [(0,20), (30,40), (70,90)], 'NM_200': [(0,35), (75,85), (90,100), (200,300)]}
Run Code Online (Sandbox Code Playgroud)
以及包含此信息的制表符分隔文件:
isoform strand pos_rein1 pos_rein2
NM_100 - 32 35
NM_100 - 16 16
NM_200 - 76 77
NM_200 - 89 90
Run Code Online (Sandbox Code Playgroud)
我想要做的是测试我的文件中的两个位置是否都在字典中的配对数字范围内.例如,32和35是否位于相同的配对数范围内?(在这种情况下,他们做(30,40))如果他们这样做,继续.如果他们不这样做(作为我文件中的最后一个案例),请不要继续.这是我到目前为止:
import csv
with open('indel_mod0_cdsStart_rein_both.txt') as f:
reader = csv.DictReader(f,delimiter="\t")
for row in reader:
pos = row['pos_rein1']
pos2 = row['pos_rein2']
name = row['isoform']
strand = row['strand']
ppos1 = int(pos)
ppos2 = int(pos2)
if name in exons:
y = exons[name]
for i, (low,high) in enumerate(exons[name]):
if low <= ppos1 <= …Run Code Online (Sandbox Code Playgroud)