有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序?
例如:
我想退货:
例如:
a = 'ZENOVW'
我想退货:
'ENOVWZ'
你可以做:
>>> a = 'ZENOVW'
>>> ''.join(sorted(a))
'ENOVWZ'
>>> a = 'ZENOVW'
>>> b = sorted(a)
>>> print(b)
['E', 'N', 'O', 'V', 'W', 'Z']
sorted
返回一个列表,所以你可以使用 join
将其再次转换为字符串:
>>> c = ''.join(b)
使用空字符串''
将b
的各个项连接在一起。
>>> print(c)
'ENOVWZ'
使用Sorted()方法解决方案可能会导致其他字符串出现一些意料之外的结果。
其他解决方案列表:
>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower())))
' belou'
>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s)))
' Bbelou'
>>> s = "Bubble Bobble"
>>> ''.join(sorted(s))
' BBbbbbeellou'
如果你想要去除结果中的空格,可以在任何被提到的情况下添加 strip() 函数:>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower()))).strip()
'belou'
Python函数sorted
对字符串返回基于ASCII编码的结果。
错误示范:在下面的例子中,e
和d
由于它们的ASCII值较小,所以排在H
和W
之后。
>>>a = "Hello World!"
>>>"".join(sorted(a))
' !!HWdellloor'
CORRECT:为了在不改变字母大小写的情况下编写排序后的字符串,请使用以下代码:
>>> a = "Hello World!"
>>> "".join(sorted(a,key=lambda x:x.lower()))
' !deHllloorW'
OR (Ref: https://docs.python.org/3/library/functions.html#sorted)
>>> a = "Hello World!"
>>> "".join(sorted(a,key=str.lower))
' !deHllloorW'
如果你想去掉所有标点符号和数字,可以使用以下代码:
>>> a = "Hello World!"
>>> "".join(filter(lambda x:x.isalpha(), sorted(a,key=lambda x:x.lower())))
'deHllloorW'
functools.reduce
。>>> from functools import reduce
>>> a = 'ZENOVW'
>>> reduce(lambda x,y: x+y, sorted(a))
'ENOVWZ'
reduce
,即 from functools import reduce
,这使得它有些棘手。 - WestCoastProjects这段代码可以用于在Python中对字符串进行字母顺序排序,而不使用任何内置函数。
k = input("请再次输入任意字符串 ")
li = []
x = len(k)
for i in range (0,x):
li.append(k[i])
print("List is : ",li)
for i in range(0,x):
for j in range(0,x):
if li[i]<li[j]:
temp = li[i]
li[i]=li[j]
li[j]=temp
j=""
for i in range(0,x):
j = j+li[i]
print("After sorting String is : ",j)
非常喜欢使用reduce()函数的答案。这里有另一种使用accumulate()函数对字符串进行排序的方法。
from itertools import accumulate
s = 'mississippi'
print(tuple(accumulate(sorted(s)))[-1])
sorted(s) -> ['i', 'i', 'i', 'i', 'm', 'p', 'p', 's', 's', 's', 's']
tuple(accumulate(sorted(s)) -> ('i', 'ii', 'iii', 'iiii', 'iiiim', 'iiiimp', 'iiiimpp', 'iiiimpps', 'iiiimppss', 'iiiimppsss', 'iiiimppssss')
我们选择元组的最后一个索引 (-1)
sorted(a)
将返回一个已排序的列表,因此对于字符串比较,您不需要使用join()
(请参见下面askewchan的答案)。 - Skippy le Grand Gourou''.join(sorted(a, reverse=True, key=str.lower))
可以用来执行反向不区分大小写的排序。可能会很方便。 - Superdooperhero