Отрицательное число в строке. Python

#python #python-3.x

#python #python-3.x

Вопрос:

Как преобразовать отрицательное значение int в отдельную цифру в массиве? Что-то вроде этого…

 x = -3987
arr = [-3,9,8,7]
  

Я попытался это сделать, но получил сообщение об ошибке.

 ValueError: invalid literal for int() with base 10: '-'
  
 x = [int(i) for i in str(x)]
  

Комментарии:

1. Единственный раз, когда у вас будет отрицательное число, это для самой левой цифры, я бы обработал этот случай отдельно и просто изменил ваше понимание списка на arr = [int(i) для i в str(x)[1:] Тогда у вас может быть условие, которое проверяет исходное число и изменяет arr[0], если оно отрицательное.

2. Замечание выше верно, но содержит опечатку, вы должны использовать arr = [int(i) for i in str(x)[1:]]

Ответ №1:

Вот как я с этим справлюсь. Ответ уже был предоставлен @Fuledbyramen .

 x = -3987
#arr = [-3,9,8,7]

if x < 0:
     arr = [int(i) for i in str(x)[1:]]
     arr[0] *= -1
else:
    arr = [int(i) for i in str(x)]

print (arr)
  

Результатом этого будет:

 [-3,9,8,7]
  

Если значение x было 3987

 x = 3987
  

тогда результат будет:

 [3,9,8,7]
  

Ответ №2:

Здесь работает понимание списка

 x = -3987
xs = str(x)

lst = [int(d) for d in (([xs[:2]] list(xs[2:])) if xs[0]=='-' else xs)]

print(lst)
  

Вывод

 [-3, 9, 8, 7]
  

Ответ №3:

Попробуйте это,

 input_number =  223
res_digits = list(str(input_number))

if res_digits[0] == '-':
    res_digits[0] = res_digits[0]   res_digits[1]
    res_digits.pop(1)
elif res_digits[0] == ' ':
    res_digits.pop(0)

print(list(map(int, res_digits)))