Вопрос-Ответ

How do I convert all strings in a list of lists to integers? [duplicate]

Как мне преобразовать все строки в списке списков в целые числа?

У меня есть набор кортежей, содержащих строки:

T1 = (('13', '17', '18', '21', '32'),
('07', '11', '13', '14', '28'),
('01', '05', '06', '08', '15', '16'))

Я хочу преобразовать все строковые элементы в целые числа и поместить их обратно в список списков:

T2 = [[13, 17, 18, 21, 32],
[7, 11, 13, 14, 28],
[1, 5, 6, 8, 15, 16]]
Переведено автоматически
Ответ 1

int() это стандартная встроенная функция Python для преобразования строки в целое значение. Вы вызываете ее со строкой, содержащей число в качестве аргумента, и она возвращает число, преобразованное в целое число:

>>> int("1") + 1
2

Если вы знаете структуру вашего списка, T1 (что он просто содержит списки, только одного уровня), вы могли бы сделать это на Python 3:

T2 = [list(map(int, x)) for x in T1]

В Python 2:

T2 = [map(int, x) for x in T1]
Ответ 2

Вы можете сделать это с пониманием списка:

T2 = [[int(column) for column in row] for row in T1]

Система понимания внутреннего списка ([int(column) for column in row]) строит list из ints из последовательности intобъектов с возможностью row преобразования, таких как десятичные строки, в,,. Функция понимания внешнего списка ([... for row in T1])) создает список результатов понимания внутреннего списка, примененных к каждому элементу в T1.

Фрагмент кода завершится ошибкой, если какая-либо из строк содержит объекты, которые не могут быть преобразованы с помощью int. Вам понадобится более умная функция, если вы хотите обрабатывать строки, содержащие десятичные строки.

Если вы знаете структуру строк, вы можете заменить понимание внутреннего списка вызовом функции строки. Например.

T2 = [parse_a_row_of_T1(row) for row in T1]
Ответ 3

Используя только понимание списка:

[[int(y) for y in x] for x in T1]
Ответ 4

Вместо put int( ) используйте put float( ), что позволит вам использовать десятичные числа вместе с целыми числами.

2023-04-28 21:40 python string