使用two for循环在python中迭代两个大列表。什么也没发生

使用two for循环在python中迭代两个大列表。什么也没发生,python,loops,for-loop,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) f

我想使用两个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循环。是因为我有两张大名单吗?有人知道如何克服这个问题吗?

我修改了您的脚本以运行测试。这就是我所做的:我插入了一个伪文本块作为
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行(珍妮)中的描述进行比较


例如,是否确实要使用相等进行比较?你是在寻找直接相等还是包容。“描述”可能包含几个单词,其中一个是有问题的数字。

您希望看到什么?数据中应该有一个与描述相等的数字吗?谢谢你的回答,我的问题是两个列表是两个大的,当我想使用for循环时,python不会运行这个。@Thierrylahuille我更改了我的问题。请在文件中包含一个最小的(几行)数据示例。文件有多大,有多少行?您应该对“数字”和“描述”列表进行排序,并在头之间进行比较(如在合并排序中):它将是n.log(n),而不是n**2