Python 根据 char 长度拆分一个 int
Python splitting an int based on the char length
我是 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']
不过,我不确定您想要的输出背后的逻辑是什么,所以如果这没有帮助,我很抱歉。
您可以将拆分抽象为一个函数,然后使用列表理解将该函数映射到列表上。可以调整以下内容(它与您在编辑之前拥有的更多内容相匹配)。当然可以调整它:
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)
输出:
1 2
0 2
0 3
0 7
0 9
0 15
59 92
我是 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']
不过,我不确定您想要的输出背后的逻辑是什么,所以如果这没有帮助,我很抱歉。
您可以将拆分抽象为一个函数,然后使用列表理解将该函数映射到列表上。可以调整以下内容(它与您在编辑之前拥有的更多内容相匹配)。当然可以调整它:
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)
输出:
1 2
0 2
0 3
0 7
0 9
0 15
59 92