使用两个for循环迭代python中的两个大型列表。什么都没发生

时间:2017-04-03 15:36:21

标签: python loops for-loop

我想使用两个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循环。是因为我得到两个大名单?谁知道如何克服这个?

1 个答案:

答案 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"描述"可能包含几个单词,其中一个是有问题的数字。