【发布时间】:2019-10-19 00:11:29
【问题描述】:
我知道关于permutations(unique、variable length、etc.)的帖子很多,很多,但我无法使用它们来解决我的特定问题问题。
假设我有一份美国大都市区列表:['nyc','sf','atl']
我需要输出 2 个 Metros 的排列而不重复。例如,我尝试过:
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')}
【问题讨论】:
-
您想要组合,
itertools.combinations?,例如combinations('ABCD', 2) --> AB AC AD BC BD CD。还有combinations_with_replacement -
@DanielMesejo 是的,这行得通!具体来说,
list(itertools.combinations_with_replacement(['nyc','sf','atl'], 2))正是我正在寻找的,因为它也可以相互比较(例如,我在列表中得到('nyc', 'nyc')。
标签: python