【问题标题】:Find all possible combinations of tuple pairs merging each into new sequences找到元组对的所有可能组合,将每个组合合并成新序列
【发布时间】:2012-04-11 00:09:05
【问题描述】:

我有一条公交路线,按以下顺序行驶(地点序列):-

Ayr - Newton - Troon - Paisley - Glasgow

即route = ['Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow']

我需要找到所有可能的方式来分割旅程(总是从 Ayr 开始,到 Glasgow 结束,所以我有代码 (python) 可以找到每个对组合并将每个(元组)对附加到一个列表中。

pairs = [('Ayr', 'Newton'),('Ayr', 'Troon'),('Ayr', 'Paisley'),('Ayr', 'Glasgow'),('Newton', 'Troon'),('Newton', 'Paisley'),('Newton', 'Glasgow'),('Troon', 'Paisley'),('Troon', 'Glasgow'),('Paisley', 'Glasgow')]

我想要结束的是一个列表列表或元组列表(或最快的内存效率最高的序列),其中包含所有可能的对组合(从 Ayr 开始,在 Glasgow 结束)。

final_splits = [['Ayr', 'Glasgow'], ['Ayr', 'Newton', 'Glasgow'], ['Ayr', 'Newton', 'Troon', 'Glasgow'], ['Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow'], ['Ayr', 'Troon', 'Glasgow'], ['Ayr', 'Troon', 'Glasgow'], ['Ayr', 'Troon', 'Paisley', 'Glasgow']..........etc]

不容易!有人可以帮忙吗?

【问题讨论】:

  • 艾尔和特伦之间不应该是普雷斯蒂克吗?
  • 喜剧演员啊!是的,这条公交路线少了几站!

标签: python list tuples python-2.7 combinations


【解决方案1】:

假设每个组合都成对出现,则无需计算中间步骤

>>> from itertools import combinations
>>> route = ['Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow']
>>> [(route[0],)+x+(route[-1],) for i in range(len(route)-1) for x in combinations(route[1:-1],i)]
[('Ayr', 'Glasgow'), ('Ayr', 'Newton', 'Glasgow'), ('Ayr', 'Troon', 'Glasgow'), ('Ayr', 'Paisley', 'Glasgow'), ('Ayr', 'Newton', 'Troon', 'Glasgow'), ('Ayr', 'Newton', 'Paisley', 'Glasgow'), ('Ayr', 'Troon', 'Paisley', 'Glasgow'), ('Ayr', 'Newton', 'Troon', 'Paisley', 'Glasgow')]

【讨论】:

  • 太棒了!太感谢了。失去中间步骤也很摇滚
  • 实际上,我刚刚意识到有时我需要中间步骤。如何从配对中生成最终结果?
  • @Handloomweaver,这是否意味着并非所有可能的组合都成对出现?
  • 我是个白痴。通过使用组合,我可以随时获得我需要的对:例如 [pair for pair in combination(route, 2)] 谢谢大家
猜你喜欢
  • 2015-10-15
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多