我目前正在尝试从两个 python 列表中创建特定的对:
Input:
l1 = ["fc1", "fc2"]
l2 = ["fh1", "fh2"]
Expected output:
outl1 = [["fc1","fh1"],["fc2","fh2"]]
outl2 = [["fc2","fh1"],["fc1","fh2"]]
您会从这个示例中猜到,“fc*”必须与“fh*”匹配,并且列表的任何出现都不能在最终输出中重复。
我必须承认,如果在网上找到有关 zip、enumerate、itertools 等的所有文档,我会感到非常困惑……
非常感谢您的帮助。
如果我理解你是正确的,你想创建所有可能的对列表('fci','fhj'),这样在每个列表中所有的 'fci' 只出现一次,并且对于 'fhj' 相同。
您可以使用它itertools.permuations
来实现这一点。我将您的示例概括为每个列表包含 3 个元素。
from itertools import permutations
A = ["fc1", "fc2", "fc3"]
B = ["fh1", "fh2", "fh3"]
B_permuations = permutations(B)
for perm in B_permuations:
print([[a, b] for a, b in zip(A, perm)])
这会给你
[['fc1', 'fh1'], ['fc2', 'fh2'], ['fc3', 'fh3']]
[['fc1', 'fh1'], ['fc2', 'fh3'], ['fc3', 'fh2']]
[['fc1', 'fh2'], ['fc2', 'fh1'], ['fc3', 'fh3']]
[['fc1', 'fh2'], ['fc2', 'fh3'], ['fc3', 'fh1']]
[['fc1', 'fh3'], ['fc2', 'fh1'], ['fc3', 'fh2']]
[['fc1', 'fh3'], ['fc2', 'fh2'], ['fc3', 'fh1']]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句