Skip to main content
 首页 » 编程设计

python之如何正确地遍历交叉路口

2025年05月04日17www_RR

我正在尝试遍历一系列交集,其中每次迭代都是一组新行的交集。我的代码看起来有点像下面这样:

    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 

NNCatelogue 本质上是一个 1268 X 12 矩阵,每一次新的 lines 迭代都会调用一个新行。如果我简单地输入我想要的行号(即: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 
    ... 

预期的输出应该是:

  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 

知道我可能哪里出错了吗?非常感谢任何帮助!

更新:

我尝试了其中一个答案的变体,虽然它更接近我的预期,但还不尽如人意。这是我尝试过的:

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

结果输出是:

    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 
    ... 

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

请您参考如下方法:

您经常使用iii。如果你执行这段代码,我什至无法想象到底发生了什么。只需为您的变量提供有用的发音名称,您的问题就可能得到解决。