我想按字母顺序对字符串列表中的每个字符串进行排序。
例如,
l1 = ["bba", "yxx", "abc"]
我想将其排序为
l1 = ["abb", "xxy", "abc"]
我可以在for循环中完成它但是想知道这是否是使用python list comprehension更加pythonic的方式。谢谢:D
答案 0 :(得分:4)
使用list comprehension和str.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初学者
l1
循环迭代列表for
的每个项目。join()
方法从列表中创建字符串。append()
列表方法将新订单项添加到新列表l2
。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]