【发布时间】:2018-01-25 18:19:17
【问题描述】:
我有一个有趣的问题。我有一个包含分层数据的列表。
relation = [('grandfather'), ('father'), ('son')]
从某种意义上说,它是分层的,没有grandfather 就不可能有son,但没有son 就可以有father。
每个条目都可以有一个状态。
status = [('tall'), ('short')]
我试图找到所有可能的组合,这是有道理的。就是这样的组合
combination_sense = [('grandfather', 'tall'), ('father', 'short'), ('son', 'short')]
可能存在,但组合
combination_no_sense = [('grandfather', 'tall'), ('son', 'short')]
可能不存在,因为没有father,就不可能有son。
同样,组合
combination_sense = [('grandfather', 'tall'), ('father', 'short')]
可能确实存在。
我尝试了itertools。我尝试了list(itertools.product()) 和itertools.permutations(),但我无法让它工作到现在。
如何处理层级关系?
【问题讨论】:
-
你能告诉我们你的实际数据吗?或者至少是一个样本?并让我知道您何时/如果您这样做了。
-
@BillBell 我得到了完全如图所示的数据,即两个简单的列表。这是显示父子关系的植物数据。列表中的最后一个条目总是最年轻的。状态实际上是谈话和简短的。
-
我理解“它是分层的......”意味着多种可能性:
[('grandfather'), ('father'), ('son')]和[('grandfather'), ('father')]。 -
也许我赶上了。世代必须是连续的:必须有一个中间世代(当然!)。允许两个连续的世代。允许单代吗?每个所谓的“状态”都可以应用于列表中的任何一代?
-
@BillBell 完全正确!每一代都可能是矮的或高的。允许单代。谢谢你的澄清!
标签: python-3.x combinations itertools