假设我有两个字符串列表:
x=['a','b'] and b=['c','d']
我需要的最终结果是:
v=['ac','ad','bc','bd']
重要的是我希望对列表元素的字母进行排序。在这里,他们是建设,但在我的实际问题中,情况并非如此。所以,如果我有'ba',在列表v中我们应该将它排序为添加'ab'。
所以我可以遍历x,并使用
创建一个列表 c = ' , '.join('%s%s' % t for t in zip(a, b))
但这不起作用,因为即使我设法对其进行排序,最终结果也将是1个元素的列表['ac,ad,bc,bd']。
实际上,如果有任何pythonic方式使用itertools或类似的东西,我会很高兴看到
' ''.join('sorted(%s%s)' % t for t in zip(a, b))
谢谢!
注意:谢谢大家的回复,但也许我表达的不正确......
因此,如果我们尝试输入:
a=['ax','ay','az']
b=['x','y','z']
所以关节应该是:
v=['axx', 'axy', 'axz', 'ayx', 'ayy', 'ayz', 'azx', 'azy', 'azz'] but sorting it....
v=['axx', 'axy', 'axz', 'axy', 'ayy', 'ayz', 'axz', 'ayz', 'azz']
这是我正在寻找的最终结果。
由于
答案 0 :(得分:2)
您可以使用itertools.product
:
sorted([''.join(x) for x in itertools.product(list1, list2)])
如果您还希望在内部对每个项目进行排序,则可以执行以下操作:
sorted([''.join(sorted(x)) for x in itertools.product(list1, list2)])
但是,如您在问题中添加的示例中所示,如果输入列表的多个组合包含相同的字符集,则会导致重复。
答案 1 :(得分:1)
sorted(i + j for i in x for j in y)
答案 2 :(得分:1)
[''.join(sorted(i + j)) for i in a for j in b]
输出:
['axx', 'axy', 'axz', 'axy', 'ayy', 'ayz', 'axz', 'ayz', 'azz']
答案 3 :(得分:0)
list(map(lambda s: ''.join(sorted(s)), sorted(i + j for i in a for j in b)))
或
sorted(''.join(sorted(i + j)) for i in a for j in b)