Автор оригинала: Evgeny Erunov.
Самый питонический способ преобразовать список поплавков ФС
К списку целых чисел – использовать одноклассник fs = [int (x) для x в fs]
Отказ Это итерации по всем элементам в списке ФС
Использование списка понимание и преобразует каждый элемент списка х
до целочисленного значения, используя int (x)
конструктор.
Эта статья показывает вам простейших способов Преобразовать одномерное Список состоящий только из плавающихся в список int Отказ
Проблема : Учитывая список поплавков [1.0, 2.0, 3.0]
Отказ Как преобразовать его в список ints [1, 2, 3]
?
Методы не применимы к спискам списков, они содержат ошибки округления, отличающиеся в каждом способе. При необходимости вы можете добавлять циклы или определить пользовательские функции для проверки, учет и минимизации ошибок.
Метод 1: Понимание списка
Предположим, у нас есть список:
a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]
Теперь проверьте тип номеров списков:
print(type(a[0])) #
Давайте применим встроенный функцию int
и получите список целых чисел:
print([int(a) for a in a]) # [1, 1, 1, 0, 5, -2]
Проверьте тип номеров в новом списке:
A = [int(a) for a in a] print(type(A[0])) #
Таким образом, используя встроенный функцию int
, который преобразует реальное число раундов к нулю или, скорее, он отбрасывает дробную часть, мы можем получить новый список целых чисел с Код однонаправления Отказ
Метод 2: Функция карты
Встроенная функция карта
Хорошо оптимизирован и эффективен, когда он вызывается, элементы списка извлекаются при доступе. Следовательно, один элемент хранится и обрабатывается в памяти, что позволяет программе не хранить весь список элементов в системной памяти.
Применить к одному списку А
Следующий код:
print(list(map(int, a))) # [1, 1, 1, 0, 5, -2]
Нет смысла проверять тип элементов результирующего списка, поскольку когда мы назвали функцию карты, мы передали функцию INT, уже описанную в методе 1 в качестве аргумента, и завернули результат в списке, используя Список
функция.
Качество этого преобразования списка или, скорее, ошибка округления, такая же, как и в первом способе.
Способ 3: круглая и списка понимание
Это очень похоже на первый, но в отличие от int
, это не просто отказывается от дробной части, но раунды до ближайшего даже целое число, если дробная часть составляет 0,5. Вы также можете пройти как второй аргумент Количество десятичных знаков, к которым требуется округление, по умолчанию это 0, это то, что мы будем использовать:
print([round(a) for a in a])
Проверьте тип номеров в новом списке:
D = [round(a) for a in a] print(type(D[0])) #
Как видно из этого примера, есть разные встроенные функции для достижения нашей цели, разница в способе и величине ошибки округления.
Метод 4: математический модуль
Таким образом, я предлагаю использовать импортный модуль Математика
, в котором мы будем использовать три функции Ceil ()
, пол ()
и trunch ()
Отказ Давайте приблизимся к каждому. У них один и тот же синтаксис, разница в пути округления.
Подам заявку в исходный список:
a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3] print([math.ceil(a) for a in a]) # [2, 2, 2, 1, 6, -2]
«Ceil» раунды до следующего крупнейшего целого числа, уважая знак ( -2.3 <-2, что верно ).
Проверьте тип номеров в новом списке:
C = [math.ceil(a) for a in a] print(type(C[0])) #
Рассмотрим следующую функцию в модуле «Math» – «Этаж», который является противоположностью «CEIL» – закругление до ближайшего целого числа:
print([math.floor(a) for a in a]) # [1, 1, 1, 0, 5, -3]
Проверьте тип:
F = [math.floor(a) for a in a] print(type(F[0])) #
Следующая функция, trunch ()
аналогичен встроенному функции int ()
– Это просто отбрасывает дробную часть, что бы она ни была:
print([math.trunc(a) for a in a]) # [1, 1, 1, 0, 5, -2]
И проверьте тип:
T = [math.trunc(a) for a in a] print(type(T[0])) #
Метод 5: Numpy
Вот посмотрите на преобразование списка из int
на массив, используя Numpy модуль. Разница между массивом и списком состоит в том, что все элементы массива должны быть того же типа, например, «FLOAT» и «int». Числовые операции с большим количеством данных могут быть выполнены с массивами намного быстрее и эффективнее, чем со списками.
Давайте перевернем наш первый список А
в массив:
import numpy as np N = np.array(a, int)
Мы передаем два аргумента в функцию массива, имя списка для преобразования в массив и тип для каждого элемента.
# [ 1 1 1 0 5 -2]
Сдвиньте тип элементов:
print(type(N[0])) #
В отличие от int
Тип номера в Python, модуль Numpy определяет их немного по-разному и разделен на несколько подгрупп. Например, 'int32'
целые числа начиная от -2147483648 до 2147483647 (4 байтовых номера), 'int64'
Числа от -92233720368547772036854775808 до 92233720368854775807 (8 байтовых номеров), есть также разные виды 'int'
Для 32- и 64-битных операционных систем это необходимо учитывать при расчете с массивами.