如何正确迭代交叉点

use*_*716 1 python loops set-intersection

我试图迭代一系列交叉点,其中每个迭代是一组新行的交集.我的代码看起来有点像下面这样:

    for liness in range(len(NNCatelogue)):
        for iii in [iii for iii, y in enumerate(NNCatelogue[iii]) if y in set(NNCatelogue[liness]).intersection(catid)]:
            print iii, y
Run Code Online (Sandbox Code Playgroud)

NNCatelogue本质上是一个1268 X 12矩阵,每个新的liness迭代都会调用一个新行.如果我只是输入我想要的行号(即:0,1,2 ......),那么我得到预期的输出(前面没有for循环).上面写的代码给出了以下输出:

    10 C-18-1064
    4 C-18-1122
    4 C-18-1122
    5 C-18-1122
    5 C-18-1122
    7 C-18-1122
    8 C-18-1122
    9 C-18-1122
    10 C-18-1122
    11 C-18-1122
    6 C-18-1122
    ...
Run Code Online (Sandbox Code Playgroud)

预期产量应为:

  0 C-18-1
  1 C-18-259
  2 C-18-303
  3 C-18-304
  4 C-18-309
  5 C-18-324
  6 C-18-335
  7 C-18-351
  8 C-18-372
  9 C-18-373
  10 C-18-518
  11 C-18-8
Run Code Online (Sandbox Code Playgroud)

知道我可能会出错吗?任何帮助是极大的赞赏!

更新:

我尝试了其中一个答案的变体,虽然它更接近我所期待的,但它并不完全存在.这是我尝试过的:

    counter = 0
    for row in NNCatelogue:
        for value in row:
            if value in set(NNCatelogue[counter]).intersection(catid):
                print counter, value
                counter += 1
Run Code Online (Sandbox Code Playgroud)

结果输出是:

    0 C-18-1
    1 C-18-324
    2 C-18-351
    3 C-18-4
    4 C-18-5
    5 C-18-6
    6 C-18-7
    7 C-18-8
    8 C-18-9
    9 C-18-10
    10 C-18-11
    11 C-18-12
    12 C-18-13
    ...
Run Code Online (Sandbox Code Playgroud)

所以有些交叉点是正确的,虽然这不是我想要的输出......这里有什么想法吗?

Ach*_*him 5

你iii经常使用.我甚至无法想象如果你执行这段代码会发生什么.只是给你的变量有用的说话名称,你的问题可能已经解决了.