将x位数转换为两位数

问题描述 投票:1回答:4

我当前在列表中有x个数字,并且我试图转换可能是1位数,5位数或2位数的不一致数据。

如何将它们全部转换为2位数字?

示例:

def List_Convert_2_Digit(z):
    for i in range(len(z)):
        while(z[i]<100 or z[i]>10):
            if(z[i]<100):
                z[i]=z[i]/10
            else:
                z[i]=z[i]*10
    return z

list_a = [5.2,1600,520,3600,13,55,4000]

result_list= List_Convert_2_Digit(list_a)

结果应产生:[52,16,52,36,13,55,40]

但是上面的代码无法正常运行,并且可以永远运行。

我尝试过mod,但这不是我想要的。

python
4个回答
2
投票

似乎您只想从每个字符中获取前两个字符,如果有分隔符(在您的情况下为点),请忽略它。

在这种情况下,您可以这样做:

two_digit_list = [int(str(x).replace('.', '')[:2]) for x in List]

如果要显示除点以外的其他非数字字符,您当然也必须处理那些:)

这只是将数字转换为字符串,删除点,然后获取前两个字符,然后将其转换回整数。

编辑:由于我看到您对上面那个数字的回答,最后应该加0,因此您可以这样做以解决这种情况:

two_digit_list = [int(str(x).replace('.', '')[:2]) if len(str(x).replace('.', '')) > 1 else int(f"{x}0") for x in List]

到那时为止,要成为一个漂亮的列表理解人太久了,所以如果不清楚的话,您总是可以将它分解为for循环,如果没有其他的话,这可能是一个很好的练习:)


0
投票

这是一个简单的解决方法。


0
投票

您的逻辑有误;您的被翻转。此代码有效:


0
投票

增加/减少数字幅度直到获得左两位数字的解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.