从python的元组列表(它本质上是一个列表的笛卡尔积)我想删除(a,b)if(b,a)是否在列表中.只有(a,b)或(b)之一,a)必须保留.列表
[(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)]
Run Code Online (Sandbox Code Playgroud)
必须减少到
[(1,2),(1,3),(2,3)]
Run Code Online (Sandbox Code Playgroud)
(虽然删除(1,2)和保留(2,1)是好的)
我试过这样做,但我不确定在迭代时从列表中删除.这不起作用.(给我[(1, 2), (2, 1), (2, 3), (3, 1), (3, 3)])
[pairs.remove((a,b)) for (a,b) in pairs if ((b,a) in pairs)]
Run Code Online (Sandbox Code Playgroud)
为什么要从列表中删除不正确的?
使用itertools.combinations来生成正确的.
>>> import itertools
>>> list(itertools.combinations((1, 2, 3), 2))
[(1, 2), (1, 3), (2, 3)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |