我当前在列表中有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,但这不是我想要的。
似乎您只想从每个字符中获取前两个字符,如果有分隔符(在您的情况下为点),请忽略它。
在这种情况下,您可以这样做:
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循环,如果没有其他的话,这可能是一个很好的练习:)
这是一个简单的解决方法。
您的逻辑有误;您的被翻转。此代码有效:
增加/减少数字幅度直到获得左两位数字的解决方案: