列表的唯一排列,无需重复

时间:2019-10-18 15:50:47

标签: python

我了解有许多关于permutationsuniquevariable lengthetc)的许多帖子,但我没有去过能够使用它们来解决我的特定问题。

假设我有一个美国大城市的列表:['nyc','sf','atl']

我需要输出2个Metro的排列而不重复。例如,我尝试过:

set(itertools.permutations(['nyc','sf','atl'], 2))

{('atl', 'nyc'),
 ('atl', 'sf'),
 ('nyc', 'atl'),
 ('nyc', 'sf'),
 ('sf', 'atl'),
 ('sf', 'nyc')}

但是,请注意,NYC和ATL配对了两次:('nyc', 'atl')('atl', 'nyc')。理想的输出为:

{('nyc', 'nyc'),
 ('nyc', 'sf'),
 ('nyc', 'atl'),
 ('sf', 'sf'),
 ('sf', 'atl'),
 ('atl', 'atl')}

1 个答案:

答案 0 :(得分:2)

如@Daniel Mesejo的评论所述,请使用组合。

>>> import itertools
>>> set(itertools.combinations(['nyc','sf','atl'], 2))
{('nyc', 'atl'), ('sf', 'atl'), ('nyc', 'sf')}