Изменение списка целых чисел в строки и сохранение каждой цифры - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть список списков целых чисел, который выглядит следующим образом:

paystring[:3]
[[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
 [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

Мне нужно преобразовать их в одно целое число, чтобы

100000002212
225543333322
000000000000

Я попробовал это:

x = []
for row in paystring:
    x.append(int("".join(map(str, row))))

Но для x[:3] я получаю

[100000002212, 225543333322, 0]

Есть идеи, как это исправить?

Ответы [ 5 ]

0 голосов
/ 27 ноября 2018

Я думаю, что это решит проблему сложения нулей.

paystring=[[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
          [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

strings = []
for el in paystring:
    string = ""
    for number in el:
        string+= str(number)
    strings.append(string)
print(strings)

Будет напечатано это: ['100000002212', '225543333322', '000000000000']

0 голосов
/ 27 ноября 2018

Вы можете использовать функцию форматирования в Python, как показано ниже:

print('{0:012d}'.format(0))

Вывод:

000000000000
0 голосов
/ 27 ноября 2018

Строго говоря, нет такого числа, как 000000000 , мы пишем его как 0 .

Если вы действительно хотите, чтобы начальные 0s не конвертировали строку в целое число с помощью int()

0 голосов
/ 27 ноября 2018

Прямое изменение вашего кода будет следующим:

x = []
for row in paystring:
    x.append(str("".join(map(str, row))))

Преобразование в str вместо int

В противном случае оно не сохранит 0s

0 голосов
/ 27 ноября 2018

В одну сторону, используя list-comprehension

lst = [[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
        [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

[''.join(map(str,l)) for l in lst]
#['100000002212', '225543333322', '000000000000']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...