gpt4 book ai didi

python - 收缩两个不同列表中的元素

转载 作者:行者123 更新时间:2023-12-01 04:59:11 24 4
gpt4 key购买 nike

我有两个不同的列表list1 = ['A','B']list2 = ['C','D','E']。我希望能够找到两个列表的元素之间所有可能的收缩。对于本例,我希望有一个代码(最好是 Python、Mathematica 或 MATLAB)来获取上面的列表并返回:

AC,BDAC、BEAD、BCAD、BE AE,BC , AE,BD

这是所有可能的缩写。我希望能够对可变大小的列表(但总是其中两个)执行此操作。我经常使用 Python 的 itertools,但我无法掌握它如何处理两个列表。任何帮助将非常感激。

最佳答案

这是我的版本:

import itertools

l1 = 'AB'
l2 = 'CDE'

n = min(len(l1),len(l2))
print('; '.join(
','.join(a+b for a,b in zip(s1,s2))
for s1,s2 in itertools.product(
itertools.permutations(l1,n),
itertools.combinations(l2,n),
)
))

这将输出:

AC,BD; AC,BE; AD,BE; BC,AD; BC,AE; BD,AE

请注意,为了简短起见,我没有构建项目列表,而是直接迭代字符串。两个列表中的哪一个获得排列以及哪一个获得组合并不重要,这只是改变输出的顺序。 排列采用所有可能的顺序,而组合返回排序的顺序。这样,您每次宫缩都恰好一次。

对于每个收缩,您将得到两个序列 s1s2,收缩发生在每个序列中相似索引的元素之间。 ','.join(a+b for a,b in zip(s1,s2)) 为这种收缩提供了一个很好的字符串。

关于python - 收缩两个不同列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26667569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com