我有一个字符串表示的数字,我想找到由原始数字组成的最小数字,即:
56340902138765401345 -> 10001233344455566789
我将字符串转换为列表并进行排序。
num = '56340902138765401345'
a = list(num)
a.sort()
由于数字不能以零开头(但我需要使用原始数字中的零),因此我正在寻找第一个非零元素并将其放在前面:
inext = next(i for i, x in enumerate(a) if x != '0')
a.insert(0, a.pop(inext))
然后我将列表转换回字符串并显示出来。
num2 = ''.join(map(str, a))
print(num2)
它能够工作,但对我来说似乎不太符合Pythonic或优雅的风格。是否有更好的方法?
00011233344455566789
不是您数字的最小排列?因为您不能有前导零。 - Cory Kramera = sorted(num)
来节省一行代码。而且,由于你的元素已经是字符串,所以你不必将它们映射到str
,因此num2 = ''.join(a)
就足够了。 - Vincent