我想使用两个for循环来迭代两个大型列表,但是没有发生。 这是代码
pfam = open(r'D:\RPS_data\pfam_annotations.tbl', 'r')
number = []
description = []
for j in pfam:
number.append(j.split('\t')[0])
description.append(j.split('\t')[-2])
print len(number),len(description)
for j in number:
for r in description:
if j==r:
print 'ok'
else:
print 'not match'
结果是:
D:\Pathyon\pathyon2.7\python.exe "D:/Biopython/Pycharm/Python Learning/war_battle/AUL-prediction/trash.py"
16230 16230
Process finished with exit code 0
我的问题是在数量和描述中找到相同的分数。显然python不运行for循环。是因为我得到两个大名单?谁知道如何克服这个?
答案 0 :(得分:0)
我修改了你的脚本以运行测试。这就是我所做的:我将一个虚拟文本blob作为io.StringIO
文件插入,并打印出结果列。
import io
annotations=u"""
1024\tmiddle\tkay\tend
3192\tmiddle\tdiana\tend
8675309\tmiddle\tjenny\tend
""".strip()
#pfam = open(r'D:\RPS_data\pfam_annotations.tbl', 'r')
pfam = io.StringIO(annotations)
number = []
description = []
for j in pfam:
number.append(j.split('\t')[0])
description.append(j.split('\t')[-2])
print len(number),len(description)
print number, description
for j in number:
for r in description:
if j==r:
print 'ok'
else:
print 'not match'
当我运行它时,输出为:
$ python2.7 test.py
3 3
[u'1024', u'3192', u'8675309'] [u'kay', u'diana', u'jenny']
not match
我认为(1)您的初始代码似乎工作正常; (2)事实上,Python正在运行第二个循环。
我怀疑你的第二个循环。您正在使用直接比较(==
)将每个数字与每个描述进行比较。这些似乎都是可能的错误来源。
例如,您确定要将第1行(1024)的数字与第3行(jenny)的描述进行比较吗?
例如,您确定要使用相等进行比较吗?你在寻找直接平等或遏制吗? A"描述"可能包含几个单词,其中一个是有问题的数字。