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)
所以有些交叉点是正确的,虽然这不是我想要的输出......这里有什么想法吗?