如何对字符串列表中的每个字符串进行排序?

时间:2015-02-15 07:49:24

标签: python string list sorting

我想按字母顺序对字符串列表中的每个字符串进行排序。

例如,

l1 = ["bba", "yxx", "abc"]

我想将其排序为

l1 = ["abb", "xxy", "abc"]

我可以在for循环中完成它但是想知道这是否是使用python list comprehension更加pythonic的方式。谢谢:D

3 个答案:

答案 0 :(得分:4)

使用list comprehensionstr.join

>>> l1 = ["bba", "yxx", "abc"]
>>> [''.join(sorted(s)) for s in l1]
['abb', 'xxy', 'abc']

答案 1 :(得分:2)

通过使用排序方法和字符串连接方法的列表压缩

>>> l1 = ["bba", "yxx", "abc"]
>>> [''.join(sorted(i)) for i in l1]
['abb', 'xxy', 'abc']
>>> 

by lambda

>>> l1
['bba', 'yxx', 'abc']
>>> map(lambda x:"".join(sorted(x)),l1)
['abb', 'xxy', 'abc']

对于Python初学者

  1. 通过l1循环迭代列表for的每个项目。
  2. 使用sorted()方法对项目和返回列表进行排序。
  3. 使用join()方法从列表中创建字符串。
  4. 使用append()列表方法将新订单项添加到新列表l2
  5. print l2
  6. e.g。

    >>> l1
    ['bba', 'yxx', 'abc']
    >>> l2 = []
    >>> for i in l1:
    ...    a = sorted(i)
    ...    b = "".join(a)
    ...    l2.append(b)
    ... 
    >>> l2
    ['abb', 'xxy', 'abc']
    

答案 2 :(得分:-1)

只需使用sorted内置功能。<​​/ p>

l1 = ["bba", "yxx", "abc"]
print [''.join(sorted(i)) for i in l1]

使用列表推导的另一种方法(如果你的字符串的固定长度为3)将是:

print ['{0}{1}{2}'.format(*sorted(i)) for i in l1]