【问题标题】:How to sort each individual string in a list of strings?如何对字符串列表中的每个单独的字符串进行排序?
【发布时间】:2015-04-15 22:29:41
【问题描述】:

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

例如,

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

我想把它排序为

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

我可以在 for 循环中执行此操作,但想知道这是否是使用 python 列表理解的更 Pythonic 方式。谢谢:D

【问题讨论】:

  • ["".join(sorted(i)) for i in l1]

标签: python string list sorting


【解决方案1】:

使用list comprehensionstr.join

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

【讨论】:

    【解决方案2】:

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

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

    通过 lambda

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

    对于 Python 初学者

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

    例如

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

    【讨论】:

    • 如果我们想要公平并比较时间,则需要将 lambda 转换为列表。
    【解决方案3】:

    只需使用sorted 内置函数即可。

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2015-09-11
      • 2022-01-13
      • 1970-01-01
      • 2022-11-15
      • 2014-07-30
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      相关资源
      最近更新 更多