例如
nested = [a,b,c]
上面列表的笛卡尔积本身将生成以下对
[(a,a),(a,b),(a,c),(b,a),(b,c),(b,b),(c,a),(c,b),(c,c)]
我想找到一种方法来生成以下
[(a,b),(a,c),(b,a),(b,c),(c,a),(c,b)]
我试了以下方法
[(x,y) for x in nested for y in nested if x != y]
对于以下测试用例,上述代码失败
nested_testcase1 = [[1,2],[2,3],[1,2]]
现在,上面的代码行将给出以下结果
[([1,2],[2,3]),([2,3],[1,2]),([1,2],[2,3]),([2,3],[1,2])]
但我想说的是
[([1,2],[2,3]),([2,3],[1,2]),([1,2],[2,3]),([2,3],[1,2]),([1,2],[1,2]),([1,2],[1,2])]
最后两个组合是通过配对第一个和最后一个元素来实现的。你知道吗
有人有什么想法吗?你知道吗
一个简单的更改:使用对象引用,而不是值:
可以使用索引而不是检查值,如:
例如:
用itertools排列试试
输出如您所愿
这也适用于您的情况:
输出为
参考如下: https://docs.python.org/3.7/library/itertools.html#itertools.permutations
相关问题 更多 >
编程相关推荐