输入一个包含若干个自然数的列表,输出一个新列表,新列表每个元素为原列表中自然数的位数。例,输入[45

输入一个包含若干个自然数的列表,输出一个新列表,新列表每个元素为原列表中自然数的位数。例,输入[45,21,456,1],输出[2,2,3,1]
a = eval(input()) 
# 这个做法太NB了,我自己写的差点都没看懂
# 第一个map返回str()后的list可迭代对象,第二个map是计算长度len(),计算list中元素的字符串长度
print(list(map(len,map(str,a))))

什么语言?要是python的话简单,其他的麻烦点

input=[45,22,123,0,22]
out=[]
for i in input:
    out.append(len(str(i)))

print(out)
#[2,2,3,1,2]

 

private int[] test(int[] data)
        {
            int[] result = new int[data.Length];
            for(int i = 0; i < data.Length; i++)
            {
                result[i] = Math.Abs(data[i]).ToString().Length;
                //Math.Abs()将数字转换为绝对值,去除负号;.ToString().Length将数字转换成字符串,然后获取字符串里面的字符数量,如此就得到了自然数的位数。
            }
            return result;
        }

 

int[] arr = {12, 33, 56, 678, 5};
for (int i = 0; i < arr.length; i++) {
      arr[i] = (int) Math.log10(arr[i]) + 1;
}
//直接保存到arr里,节省空间。要是arr还有用,就重新创建一个数组来接收