【发布时间】:2021-01-17 23:31:14
【问题描述】:
我有两个包含 5 个元素的列表。我想使用 itertools 或 python 代码返回一个包含 5 个元素的列表,该列表由列表的所有排列组成,仅交换具有相同索引的两个列表的元素。
例如,如果A = [1,2,3,4,5] 和B = [a,b,c,d,e],我希望它返回以下列表列表,C:
A 中没有元素被B 替换的情况:
[1,2,3,4,5]
A 中的所有索引都被 B 替换的情况:
[a,b,c,d,e]
A 中只有一个元素被 B 中具有匹配索引的元素替换的情况:
[a, 2, 3, 4, 5]
[1, b, 3, 4, 5]
[1, 2, c, 4, 5]
[1, 2, 3, d, 5]
[1, 2, 3, 4, e]
A 中的两个元素被B 中具有匹配索引的元素替换的情况(注意:这可以是任意两个元素,两个元素不必相邻):
[a, b, 3, 4, 5]
[1, b, c, 4, 5]
[1, 2, c, d, 5] …等等…
[a, 2, 3, 4, e]
[1, b, 3, c, 5] …等等…
替换 3 个元素的情况(同样,这可以是任意 3 个元素):
[a, b, c, 4, 5]
[1, b, c, d, 5] …等等…
替换4个元素的情况(任意4个元素):
[a, b, c, d, 5]
[a, 2, c, d, e]
[a, b, c, 4, e] ...等...
我认为使用 itertools 会很简单,但在创建此列表时遇到了问题。
【问题讨论】:
-
你确定你的意思是 permutations 吗?因为在您的示例中,列表元素的 order 永远不会改变!
标签: python list combinations permutation itertools