• 0 Vote(s) - 0 Average
• 1
• 2
• 3
• 4
• 5
[Tut] How to Convert a Float List to an Integer List in Python

How to Convert a Float List to an Integer List in Python

The most Pythonic way to convert a list of floats `fs` to a list of integers is to use the one-liner `fs = [int(x) for x in fs]`. It iterates over all elements in the list `fs` using list comprehension and converts each list element `x` to an integer value using the `int(x)` constructor.

This article shows you the simplest ways to convert a one-dimensional list consisting only of floats to a list of int.

Problem: Given a list of floats `[1.0, 2.0, 3.0]`. How to convert it to a list of ints `[1, 2, 3]`?

The methods are not applicable to lists of lists, they contain rounding errors that are different in each method. If necessary, you can add cycles or define custom functions to check, account for and minimize errors.

Method 1: List Comprehension

Suppose we have a list:

`a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]`

Now, check the type of the list numbers:

```print(type(a[0]))
# <class 'float'>
```

Let’s apply the built-in function `int`, and get a list of integers:

```print([int(a) for a in a])
# [1, 1, 1, 0, 5, -2]
```

Check the type of numbers in the new list:

```A = [int(a) for a in a]
print(type(A[0]))
# <class ‘int’>
```

Thus, using the built-in function `int`, which converts a real number rounds towards zero, or rather, it discards the fractional part, we can get a new list of integers with a one-line code.

Method 2: Map Function

The built-in function `map` is well optimized and efficient, when it is called, the elements of the list are retrieved upon access. Therefore, one element is stored and processed in memory, which allows the program not to store the entire list of elements in the system memory.

Apply to the same list `a` the following code:

```print(list(map(int, a)))
# [1, 1, 1, 0, 5, -2]
```

It makes no sense to check the type of the elements of the resulting list, since when we called the `map` function, we passed the `int` function already described in method 1 as an argument, and wrapped the result in a list using the `list` function.

The quality of this transformation of the list, or rather the rounding error, is the same as in the first method.

Method 3: Round & List Comprehension

It is very similar to the first, but unlike `int`, it doesn’t just discard the fractional part but rounds to the nearest even integer if the fractional part is 0.5. You can also pass as the second argument the number of decimal places to which rounding is required, by default it is 0, this is what we will use:

`print([round(a) for a in a])`

Check the type of numbers in the new list:

```D = [round(a) for a in a]
print(type(D[0]))
# <class ‘int’>
```

As you can see from this example, there are different built-in functions to achieve our goal, the difference is in the method and the magnitude of the rounding error.

Method 4: Math Module

In this way, I suggest using the imported module `math`, in which we will use the three functions `ceil()`, `floor()`, and `trunc()`. let’s take a closer look at each. They have the same syntax, the difference is in the way of rounding.

Let’s apply to the original list:

```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’ rounds to the next largest integer, respecting the sign(-2.3 < -2 which is True).

Check the type of numbers in the new list:

```C = [math.ceil(a) for a in a]
print(type(C[0]))
# <class ‘int’>
```

Consider the following function in the ‘math’ – ‘floor’ module, which is the opposite of ‘ceil’ – rounding down to the nearest integer:

```print([math.floor(a) for a in a])
# [1, 1, 1, 0, 5, -3]
```

Check the type:

```F = [math.floor(a) for a in a]
print(type(F[0]))
# <class ‘int’>
```

The next function, `trunc()`, is analogous to the built-in function `int()` — it simply discards the fractional part whatever it is:

```print([math.trunc(a) for a in a])
# [1, 1, 1, 0, 5, -2]```

And check the type:

```T = [math.trunc(a) for a in a]
print(type(T[0]))
# <class ‘int’>```

Method 5: NumPy

Here’s a look at converting a list from an `int` to an array using the NumPy module. The difference between an array and a list is that all elements of an array must be of the same type, like “float” and “int”. Numeric operations with large amounts of data can be performed with arrays much faster and more efficiently than with lists.

Let’s turn our first list `a` into an array:

```import numpy as np
N = np.array(a, int)
```

We pass two arguments to the array function, the name of the list to convert to an array and the type for each element.

`# [ 1 1 1 0 5 -2]`

Сheck the type of elements:

```print(type(N[0]))
# <class 'numpy.int32'>
```

Unlike the `int` number type in Python, the NumPy module defines them slightly differently and is divided into several subgroups. For example, `'int32'` are integers ranging from -2147483648 to 2147483647 (4-byte numbers), `'int64'` are numbers from -9223372036854775808 to 9223372036854775807 (8-byte numbers), there are also different types of `'int'` for 32- and 64-bit operating systems, this must be taken into account when calculating with arrays.

The post How to Convert a Float List to an Integer List in Python first appeared on Finxter.

https://www.sickgaming.net/blog/2020/11/...in-python/

 Possibly Related Threads… Thread Author Replies Views Last Post [Tut] [Floyd’s Algorithm] How to Detect a Cycle in a Linked List in Python? xSicKxBot 0 12 05-03-2021, 03:55 PM Last Post: xSicKxBot [Tut] Sorting a List Based on Values From Another List xSicKxBot 0 17 04-29-2021, 02:42 PM Last Post: xSicKxBot [Tut] How To Apply A Function To Each Element Of A List? xSicKxBot 0 24 04-25-2021, 07:02 PM Last Post: xSicKxBot [Tut] Converting Integer to String in Python xSicKxBot 0 32 04-18-2021, 11:56 AM Last Post: xSicKxBot [Tut] How to Convert a String List to an Integer List in Python xSicKxBot 0 38 04-09-2021, 01:50 PM Last Post: xSicKxBot [Tut] How to Convert a Float List to a String List in Python xSicKxBot 0 37 04-07-2021, 02:53 PM Last Post: xSicKxBot [Tut] Python String to Float Conversion xSicKxBot 0 40 04-01-2021, 11:07 PM Last Post: xSicKxBot [Tut] How to Convert Hex String to Integer in Python xSicKxBot 0 43 03-30-2021, 01:04 PM Last Post: xSicKxBot [Tut] Python OpenCV Image Processing – Resize, Blend, Blur, Threshold, Convert xSicKxBot 0 43 03-23-2021, 12:13 PM Last Post: xSicKxBot [Tut] Check If All Elements In A List Are Identical xSicKxBot 0 47 03-20-2021, 10:12 AM Last Post: xSicKxBot

Forum Jump:

 Active Threads [Tut] Iterating Through a Range of Dates... Last Post: xSicKxBot Yesterday 09:18 PM » Replies: 0 » Views: 3 (Indie Deal) FREE Super Panda Adventures... Last Post: xSicKxBot Yesterday 09:18 PM » Replies: 0 » Views: 3 Mobile - RuneScape Mobile – what Jagex l... Last Post: xSicKxBot Yesterday 09:18 PM » Replies: 0 » Views: 3 ASP.NET Core 6 and Authentication Server... Last Post: xSicKxBot Yesterday 09:18 PM » Replies: 0 » Views: 3 AppleInsider - Mj Rodriguez joins Apple ... Last Post: xSicKxBot Yesterday 09:17 PM » Replies: 0 » Views: 4 News - Random: This Minecraft Version Of... Last Post: xSicKxBot Yesterday 09:17 PM » Replies: 0 » Views: 3 News - Don't Miss Vinny, Alex, And Brad'... Last Post: xSicKxBot Yesterday 09:17 PM » Replies: 0 » Views: 33 Xbox Wire - Xbox and NTWRK Collaborate t... Last Post: xSicKxBot Yesterday 02:05 PM » Replies: 0 » Views: 5 News - Nintendo Game Builder Garage Game... Last Post: xSicKxBot Yesterday 02:05 PM » Replies: 0 » Views: 54 News - Get a job: Join Talofa Games as a... Last Post: xSicKxBot Yesterday 02:05 PM » Replies: 0 » Views: 53