我试图遍历一系列交叉点,其中每次迭代都是一组新行的交叉点。我的代码如下所示:
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 矩阵,每一次新的线迭代调用一个新行。如果我只是输入我想要的行号(即: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
...
所以一些交叉点是正确的,虽然这不是我想要的输出......这里有什么想法吗?