#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)))