# 5 Best Ways to Convert Python Complex to Real Number

π‘ Problem Formulation: In Python, complex numbers are represented by a real part and an imaginary part. Sometimes, you might need to extract just the real part of a complex number for further calculations or processing. For instance, if given the complex number `3+4j`, the desired output is `3`, the real part of the complex number.

## Method 1: Using the real Attribute

Every complex number in Python has a built-in attribute `.real` that returns its real part. This method is straightforward and is the most common way to obtain the real portion of a complex number.

Here’s an example:

```complex_number = 3 + 4j
real_part = complex_number.real
print(real_part)```

Output:

`3.0`

This code snippet demonstrates how to extract the real part of a complex number using the `.real` attribute. It directly accesses the real component of `complex_number` and prints it.

## Method 2: Using the abs() Function

While the `abs()` function typically returns the magnitude of a complex number, when applied to the real part only, it effectively converts a real number to its absolute value, which can be useful in certain contexts.

Here’s an example:

```real_number = -5
real_part = abs(real_number)
print(real_part)```

Output:

`5`

By applying the `abs()` function, we convert a negative real number to its positive counterpart, thus demonstrating how to obtain the absolute value of the real part of an actual real number.

## Method 3: Using the astype() Function with NumPy Arrays

When working with NumPy arrays, you can use the `astype()` function to cast the complex array to a float, which discards the imaginary part and keeps only the real numbers.

Here’s an example:

```import numpy as np
complex_array = np.array([1+2j, 3+4j, 5+6j])
real_array = complex_array.astype(float)
print(real_array)```

Output:

`[1. 3. 5.]`

This snippet utilizes NumPy’s `astype()` function to convert an array of complex numbers into an array of their real components.

## Method 4: Mapping the Real Attribute to Each Element in a List

For a list of complex numbers, the `map()` function can be used to apply the `real` attribute to each element, collecting the real parts into a new list.

Here’s an example:

```complex_list = [1+2j, 3+4j, 5+6j]
real_list = list(map(lambda c: c.real, complex_list))
print(real_list)```

Output:

`[1.0, 3.0, 5.0]`

The example demonstrates mapping the `real` attribute over a list of complex numbers to extract a list of real numbers.

## Bonus One-Liner Method 5: List Comprehension

Similar to Method 4, a list comprehension can be used for a more Pythonic and concise way of extracting the real parts from a list of complex numbers.

Here’s an example:

```complex_list = [1+2j, 3+4j, 5+6j]
real_list = [c.real for c in complex_list]
print(real_list)```

Output:

`[1.0, 3.0, 5.0]`

By using list comprehension, we achieve the same result as Method 4, but with more concise, readable code that is idiomatic to Python.

## Summary/Discussion

• Method 1: Using the real Attribute. Straightforward and direct. Best for single complex numbers. Not applicable to lists or arrays directly.
• Method 2: Using the abs() Function. Returns absolute value for real numbers. Not suitable for complex numbers but good for showcasing the use of abs() on real members.
• Method 3: Using the astype() Function with NumPy Arrays. Ideal for arrays of complex numbers. Requires the NumPy library. Not applicable to single complex numbers or normal lists.
• Method 4: Mapping the Real Attribute. Good for lists of complex numbers. A bit verbose. Less Pythonic compared to list comprehension.
• Method 5: List Comprehension. Pythonic and concise. Ideal for converting lists of complex numbers to lists of real numbers.