Автор оригинала: Evgeny Erunov.
Самый питонический способ преобразования ОН Перебировать все элементы в списке ФС, ИСПОЛЬЗУИ
В этой статье показыны простеишие способылы ПРЕОБРАЗОВАНИЯ ОДНОМЕРНОГО Списка , состоящего только из ЧИСЕЛ С Плавающей запятой , в списке ЦЕЛЫХ ЧИСЕЛ Отказ
ПРОБЛЕМА : Дан Список числел с плавающую запятой [1.0, 2.0, 3.0]
Отказ КАК ЕГО ПРЕИБРАЗВАТЬ В СПИСОК ЦЕЛЫХ ЧИСЕЛ [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: Функция карта
Второенная функция карта , является хорошо оптимизированным и эффективным, при ее вызове элементов списка извлекается при обращении, а следовательно в памяти находится и обрабатывается один элемент, что позволяет программа не хранить в памяти системы всего списка элементов.
Применим к тому же списание «A» Код Ниже:
print(list(map(int, a))) # [1, 1, 1, 0, 5, -2]
Проверять тип Элементов Полученного Списка Мы не Будем, Так КАК ПРИЗОВЕ ФУНКЦИИ «карта» Передали в нереописанную в методе 1 функЦию ‘int’ в качестве аргумента, азолтат Обернули в Список применения Функции ‘список’.
Метод 3: Функция Вокруг в Определии Списка
Он очень схож с первым, но в отличие от ‘ИНТ’, он не просто отбрасывает дробную часть, а округляет до ближайшего четного целого числа, если дробная часть равна 0,5. Также можно передать в качестве второго аргумента количество знаков после запятой, до которых необходимо округление, по умолчанию это 0, этим мы и воспользуемся:
print([round(a) for a in a])
Проверим Тип Чисел Нового СПИСКА:
D = [round(a) for a in a] print(type(D[0])) #
Как видим из этого пример, есть разные встроенные функкии для дополнительных цели, отличия
МЕТОД 4: Модуль Математика
В этой спсобере мне предлагаю Математика ‘, в котором Будем ИСПОЛЬЗИТЬ ТРИ ФУЕНЦЦИИ Ceil () ,
пол () , И
trunc () Отказ Расспомотрит подробнее кажлый. Синтаксис У Них Одинаковый, Различество в спасобебе Округление.
Применим к изначальному списку:
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’ Ouruglyate К БЛИГАЙМУ БОЛЬШЕЕ ЦЕЛОМУ ЧИСЛУ С УЧЕТОМ ЗНАКА ( -2.3 <-2 Выvod buidet true )
Проверим Тип ЧИСЕЛ в полученном виде:
C = [math.ceil(a) for a in a] print(type(C[0])) #
Расспомотримлетующуюфу купить в модуле ‘Math’ – «Этаж», её действо противоположно ‘Ceil’ – OuruglyTy в меньшую стоюку:
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’ в массов C помощность модуля numpy. Отличие массива от списка – все элементы массива должны быть одного типа, как «плавать» и ‘INT’ Числовые операции с большим объемом данных можно проводить с массивами гораздо быстрее и эффективнее чем со списками..
Превратим наш Первый список ‘A’ Â Массив:
import numpy as np N = np.array(a, int)
В функцею массив Мы передаем Два аргумента, Имя Списка для окончания
# [ 1 1 1 0 5 -2]
Проверим Тип Элементов:
print(type(N[0])) #
В отличии от типа чисел ‘int’ in python в модуле numpy Определины незнаколько инача и расселены на незналько подгрупп. Например, ‘int32’ – это целые числа в диапазоне от -2147483648 до 2147483647 (4-байтовые числа), ‘int64’ – числа от -9223372036854775808 до 9223372036854775807 (8-байтовые числа), также есть различные типы ‘INT’ для 32- И 64-битные операционные системы