Python разбиение int на основании длины символа - PullRequest
0 голосов
/ 09 января 2020

Я новичок в python и хотел бы сделать простую функцию. Я хотел бы прочитать входной массив и, если значение больше 4 цифр, затем разделить его, затем вывести первое значение, а затем второе значение.

У меня проблемы с разбиением числа и избавлением от промежуточных 0; так, например, 1006, станет 1, 6.

Массив ввода:

a = [ 1002, 2, 3, 7 ,9, 15, 5992]

Желаемый вывод в консоли:

1, 2
2
3
7
9
15
59,92

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете абстрагировать разбиение на функцию, а затем использовать понимание списка, чтобы отобразить эту функцию над списком. Следующее может быть изменено (оно соответствует большему количеству того, что вы имели до одного из ваших правок). Конечно, его можно настроить:

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
1 голос
/ 10 января 2020

Если вы просто хотите получить список ненулевых цифр в исходном списке, вы можете использовать это:

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]

или go прямо на

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

Я не уверен, что логика c стоит за вашим желаемым выводом, поэтому, если это не поможет, я ' мне жаль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...