Дополнительно
Как преобразовать строки в целые числа в Python?
У меня есть кортеж кортежей из запроса MySQL следующего вида:
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]]
Я пытался добиться этого с помощью eval
, но пока не получил никакого достойного результата.
424
14
int()
- это стандартная встроенная функция Python для преобразования строки в целое число. Вы вызываете ее со строкой, содержащей число в качестве аргумента, и она возвращает число, преобразованное в целое:Выше приведено
2
.Если вы знаете структуру вашего списка T1 (что он просто содержит списки, только одного уровня), вы можете сделать это в Python 2:
В Python 3:
Это можно сделать с помощью понимания списка:
Внутренний список (
[int(column) for column in row]
) строитсписок
intиз последовательности
int-возможных объектов, таких как десятичные строки, в
row. Внешний список (
[... for row in T1])) строит список из результатов внутреннего списка, примененного к каждому элементу в
T1`.Фрагмент кода завершится неудачей, если какая-либо из строк содержит объекты, которые не могут быть преобразованы с помощью
int
. Вам понадобится более умная функция, если вы хотите обрабатывать строки, содержащие недесятичные строки.Если вы знаете структуру строк, вы можете заменить внутренний список вызовом функции строки. Например.
Я бы предпочел использовать только списки понимания:
Вместо того, чтобы как
int( )
, ставитьпоплавок ()
, который позволит вам использовать десятичные дроби с целыми числами.Я бы согласился с всякие ответы, но проблема заключается в том, что если у вас нет всех чисел они будут врезаться.
Если вы хотели исключить номера-целые числа, то
Это дает только фактические цифры. Почему я не'т использовать прямые списочные включения происходит потому, что понимание списке утечки своих внутренних переменных.
Попробуйте это.
X-это строка, потому что она в кавычках, но он имеет ряд в нем.
Так как X имеет номер 1, я могу превратить его в целое число.
Чтобы увидеть, если строка является числом, вы можете сделать это.
Она должна вывести на холостой ход верно, потому что X-это число.
Она должна вывести в режим ожидания false, потому что г не является числом.
В Python 3.5.1 вот такие работы:
и
Джордж.
Используя списочные включения:
Еще одно функциональное решение для Python 2:
В Python 3 будет немного сумбурно, хотя:
мы можем исправить это с оберткой
Увидеть эту функцию
Тогда
Вы также можете проверить
Если это's только кортеж кортежей, что-то вроде
строки=[карты(инт строки) в строке в строки]
будет делать трюк. (Там'с осознание списке и звонка карте(Ф ЛСТ), которая равна [ф(а) для себя в ЛСТ], есть.)Eval-это не то, что вы хотите сделать, в случае, если там's что-то вроде
__импорт__(на"ОС" - а).отвязать("и importantsystemfile", У)
в базе данных по какому-то поводу. Всегда проверяйте ваш вклад (если ни с чем другим, за исключением инт() будет поднимать, если у вас плохой вход).Я хочу поделиться доступный вариант, который не'т, кажется, чтобы быть упомянутым здесь, но:
Будет генерировать случайную перестановку массива x. Не точно, что вы просили, но это потенциальное решение подобных вопросов.
Вы можете сделать что-то вроде этого: