我了解有许多关于permutations(unique,variable length,etc)的许多帖子,但我没有去过能够使用它们来解决我的特定问题。
假设我有一个美国大城市的列表:['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')}
答案 0 :(得分:2)
如@Daniel Mesejo的评论所述,请使用组合。
>>> import itertools
>>> set(itertools.combinations(['nyc','sf','atl'], 2))
{('nyc', 'atl'), ('sf', 'atl'), ('nyc', 'sf')}