Python根据字符长度拆分int

Python根据字符长度拆分int,python,split,int,Python,Split,Int,我是python新手,想做一个简单的函数。我想读取输入数组,如果值超过4位,则将其拆分,然后打印第一个值,然后打印第二个值 我在拆分数字和清除中间的0时遇到问题;比如1006,会变成1,6 输入阵列: a = [ 1002, 2, 3, 7 ,9, 15, 5992] 控制台中所需的输出: 1, 2 2 3 7 9 15 59,92 如果您只需要原始列表中非零数字的列表,可以使用: a = [ 1002, 2, 3, 7 ,9, 15, 5992] strings = [str(el) fo

我是python新手,想做一个简单的函数。我想读取输入数组,如果值超过4位,则将其拆分,然后打印第一个值,然后打印第二个值

我在拆分数字和清除中间的0时遇到问题;比如1006,会变成1,6

输入阵列:

a = [ 1002, 2, 3, 7 ,9, 15, 5992]
控制台中所需的输出:

1, 2
2
3
7
9
15
59,92

如果您只需要原始列表中非零数字的列表,可以使用:

a = [ 1002, 2, 3, 7 ,9, 15, 5992]
strings = [str(el) for el in a]
str_digits = [char for el in strings for char in el if char != '0']
如果您希望数字为整数,可以执行以下操作:

int_digits = [int(el) for el in str_digits]
或者直接去

int_digits = [int(char) for el in strings for char in el if char != '0']

但是,我不确定所需输出背后的逻辑是什么,因此,如果这没有帮助,我很抱歉。

如果您只需要原始列表中非零数字的列表,您可以使用以下方法:

a = [ 1002, 2, 3, 7 ,9, 15, 5992]
strings = [str(el) for el in a]
str_digits = [char for el in strings for char in el if char != '0']
如果您希望数字为整数,可以执行以下操作:

int_digits = [int(el) for el in str_digits]
或者直接去

int_digits = [int(char) for el in strings for char in el if char != '0']

但是,我不确定所需输出背后的逻辑是什么,因此如果这没有帮助,我很抱歉。

您可以将拆分抽象为一个函数,然后使用列表理解将该函数映射到列表上。可以对以下内容进行调整(它与编辑之前的内容更匹配)。当然可以调整:

def split_num(n):
    s = str(n)
    if len(s) < 4:
        return 0, n
    else:
        a,b = s[:2], s[2:]
        if a[1] == '0': a = a[0]
        return int(a), int(b)

nums = [1002, 2, 3, 7 ,9, 15, 5992]
result = [split_num(n) for n in nums]

for a,b in result:
    print(a,b)

您可以将拆分抽象为一个函数,然后使用列表理解将该函数映射到列表上。可以对以下内容进行调整(它与编辑之前的内容更匹配)。当然可以调整:

def split_num(n):
    s = str(n)
    if len(s) < 4:
        return 0, n
    else:
        a,b = s[:2], s[2:]
        if a[1] == '0': a = a[0]
        return int(a), int(b)

nums = [1002, 2, 3, 7 ,9, 15, 5992]
result = [split_num(n) for n in nums]

for a,b in result:
    print(a,b)

你想要的输出没有多大意义。为什么5992是59,92?不是应该是52吗?你想要的结果似乎很模糊。请更清楚地解释其背后的逻辑。您似乎以一种与您的问题描述不匹配的方式引入了零。还有,你试过什么?在没有看到您的代码的情况下,我们只能猜测您提到的“问题”是什么。看起来像是转换到
str
,切片(如果需要,再转换回
int
)应该可以做到这一点。到目前为止您尝试了什么?如果
5992
变成
59,92
为什么
1002
变成
1,2
而不是
10,2
?应该变成什么<代码>1,20或
1,2
?您想要的输出没有多大意义。为什么5992是59,92?不是应该是52吗?你想要的结果似乎很模糊。请更清楚地解释其背后的逻辑。您似乎以一种与您的问题描述不匹配的方式引入了零。还有,你试过什么?在没有看到您的代码的情况下,我们只能猜测您提到的“问题”是什么。看起来像是转换到
str
,切片(如果需要,再转换回
int
)应该可以做到这一点。到目前为止您尝试了什么?如果
5992
变成
59,92
为什么
1002
变成
1,2
而不是
10,2
?应该变成什么<代码>1,20或
1,2
?谢谢,非常感谢。谢谢,非常感谢。