Рубрики
Без рубрики

Как преобразовать список поплавок в список целочисленного в Python

Самый питонический способ преобразовать список поплавок FS в список целых чисел – использовать один вкладыш FS = [INT (X) для x в FS]. Это итерации по всем элементам в списке FS с использованием понимания списка и преобразует каждый элемент X в списке в целочисленное значение с использованием конструктора INT (X). Это … Как преобразовать список поплавок в целочисленный список в Python Подробнее »

Автор оригинала: 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-битных операционных систем это необходимо учитывать при расчете с массивами.