Python - 加入两个字符串列表并对其元素进行排序的最好方法

时间:2014-11-11 08:09:35

标签: python

假设我有两个字符串列表:

 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']

这是我正在寻找的最终结果。

由于

4 个答案:

答案 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)