【发布时间】:2021-06-15 05:46:20
【问题描述】:
我需要获取相互链接的元组位置,其中至少有一个元素。
[('1','1','1'),
('X','1','X'),
('Z','Z','Z'),
('Y','Y','X')]
这里,在第一个元组中,值“1”出现在第二个元组中。 而且,现在在最后一个元组中的第二个元组值“X”。
所以,我需要将所有这些组合到一个列表中,而元组 3 值 ['Z'] 与任何其他元组都不匹配。因此,它存储在单独的列表中。
Expected : [[0,1,3],[2]]
我的做法:
df = [('1','1','1'),('X','1','X'),('Z','Z','Z'),('Y','Y','X')]
res = [list(sub) for sub in df]
res
count=0
list_A=[]
for i,j in enumerate(res):
for m,n in enumerate(j):
if res[i][m] in res[i]:
print(res.index(j))
【问题讨论】:
-
在 [('1','2'),{'2', '3'), ('3','4')] 上的预期行为是什么? [0, 1, 2] 似乎不正确,因为 0 和 2 没有任何共同点。你想要 [0, 1] 和 [1, 2]?
-
0 的元组与 1 有共同的元素,1 的元组在 3 的元组有共同的元素,因此所有这些都是连接/链接的。所以我的列表中的第一个列表应该包含所有链接元组的索引。第二个列表是被遗漏的元组。
-
您能否阐明您要通过索引处理实现的目标?
i和m已经是 indizes,j和n已经是元组和值。您的代码知道它处理的元组的索引。res.index(j)应该做什么?您是在问您当前的代码有什么问题,或者如何解决出现的问题? -
这看起来与拓扑排序有关。您期望重复或循环链接会发生什么?例如。
[('1', '2'), ('2', 'A'), ('2', 'B'), ('A', '4'), ('B', '5')]和[('1', '2'), ('2', '3'), ('3', '1')]的预期结果是什么? -
对于您给出预期输出的示例,
[[0,1,2,3,4]]和[[0,1,2]]。输入[('1', '2'), ('2', '3'), ('3', '1'), ('4', '5')]的另一个示例,输出应为[[0,1,2],[3]]。输出是通过至少一个元素链接的元组索引。这里,索引 3 单独在单独的列表中,因为索引 3 元素在其他索引值中没有任何公共元素