Python 列表中数组的非元素配对
假设我有一个列表,列表=[[0,1,2],[1,2,0],[2,1,3],[3,1,2]]。我想对列表中的数组位置进行匹配和分组,尽管它们的位置不同,但它们的数字相同,并获得它们的索引。 例如,我的代码应该给出[0,1,2]和[1,2,0]是相同的,它们的位置是0和1。我需要一个代码来像这样对列表中的所有元素进行分组。 我知道使用for和if循环执行此操作的基本方法,但我想知道在python中是否有一种有效的方法 编辑-我用下面的代码实现了这个解决方案,它正在做我想做的事情。我想知道有没有一个有效的方法来做到这一点Python 列表中数组的非元素配对,python,arraylist,pairwise,Python,Arraylist,Pairwise,假设我有一个列表,列表=[[0,1,2],[1,2,0],[2,1,3],[3,1,2]]。我想对列表中的数组位置进行匹配和分组,尽管它们的位置不同,但它们的数字相同,并获得它们的索引。 例如,我的代码应该给出[0,1,2]和[1,2,0]是相同的,它们的位置是0和1。我需要一个代码来像这样对列表中的所有元素进行分组。 我知道使用for和if循环执行此操作的基本方法,但我想知道在python中是否有一种有效的方法 编辑-我用下面的代码实现了这个解决方案,它正在做我想做的事情。我想知道有没有一个有
import numpy as np
pairs=[[0,1],[1,0],[1,2],[2,1]]
for j in range(4):
pairs[j]=sorted(pairs[j])
print(pairs)
pr=(len(pairs))
unique=np.unique(pairs,axis=0)
print(unique)
house_clusters=list()
for t in range(len(unique)):
uni=unique[t]
seq2=list()
for r in range (pr):
if np.array_equal(pairs[r],uni):
seq2.append(r)
house_clusters.append(seq2)
print(house_clusters)
如评论中所述,您的问题不清楚,可能重复。我认为你想要的是,在组成元素的基础上,将所有数组视为相等的,如果这是你想要的,那么试着使用set和frozenset
''' Example all arrays like [0,1,2], [0,2,1], [1,0,2], [1,2,0], [2,0,1], [2,1,0] will be equal to frozenset({0,1,2}) '''
list1 = [[0,1,2], [0,2,1], [1,0,2], [1,2,0], [2,0,1], [2,1,0],[2,1,3],[3,1,2]]
tmp ={frozenset(x) for x in list1}
print(tmp)
output: {frozenset({0, 1, 2}), frozenset({1, 2, 3})}
您还提到,您已经有了使用for和if的问题解决方案,请尝试将其添加到此处,以便我们可以确定您到底想要什么。您没有数组列表,而是有一个列表元组。什么是“配对”?请相应地编辑并格式化您的问题。对不起,我是该平台的新手。有时我不知道某些事物的确切术语。感谢您的帮助。谢谢Hanks rohan,正如你所问,我已经添加了我的解决方案,我使用了unique而不是frozenset,但最后我需要的是每个frozenset的分组索引。在您的示例中,最后我想要的是[[0,1,2,3,4,5],[6,7]。您可以看到我附带的结果。