# The Ultimate Guide to Python Data Types

Welcome to the ultimate guide on Python data types. Whether you’re just starting out or want to brush up on your knowledge, this comprehensive guide has got you covered.

We’ll walk you through all the essential concepts, and practical uses, and provide plenty of relevant examples to help you grasp the topic easily.

Data types are mainly five types:

## Numeric Data Types

Numeric data types are a way to store and work with numbers in computer programs. There have mainly Numeric Data Types are:

Integers (int): Integers are whole numbers without decimal points. They can be positive, negative, or zero. Integers are perfect for counting or representing quantities that don’t involve fractions or decimals. For example, 1, -10, and 0 are all integers.

Floating Numbers (float): Floating numbers are used to represent real numbers with decimal points. They are ideal for situations where precision and accuracy are essential. Floating-point numbers can handle values like 5.44, -5.5, or 0.0. Keep in mind that due to the way they are stored in the computer’s memory, there might be some tiny rounding errors.

Complex Numbers (complex): Complex numbers are used when you need to work with numbers that involve both a real part and an imaginary part. They are written in the form of “a + bj,” where “a” represents the real part, “b” represents the imaginary part, and “c” represents the square root of -1. Complex numbers come in handy in fields like mathematics, physics, and engineering, where imaginary numbers are used to model various phenomena.

Here, I check the data type using the code `print(type(____))`. If you are confused about what kind of data you have, you can easily check it using this code.

``````# Example of numeric data types in Python

# Integers
num1 = 10
num2 = -5

# Floating-point numbers
float_num1 = 3.14
float_num2 = 2.5

# Complex numbers
complex_num1 = 2 + 3j
complex_num2 = -1.5 + 0.5j

# For identifying the type of variables
print("num1 is a", type(num1))
print("float_num1 is a", type(float_num1))
print("complex_num1 is a", type(complex_num1))

# Perform arithmetic operations
sum_result = num1 + num2
difference_result = float_num1 - float_num2
product_result = complex_num1 * complex_num2

# Print the results
print("\nSum of integers:", sum_result)
print("Difference of floats:", difference_result)
print("Product of complex numbers:", product_result)
``````

Output:

## Sequence Data Types

Sequences are ordered collections of elements that allow us to store and manipulate data in a structured manner. Python provides three primary sequence data types:

Strings (str): Strings are sequences of characters enclosed in single quotes (”) or double quotes (“”). They are commonly used to represent textual data. Strings in Python are immutable, meaning they cannot be modified once created.

Example of Strings

``````message = "Hello World!"
print(message)  # Output: Hello World!``````

Lists (list): Lists are mutable sequences that can contain elements of different data types. They are defined by enclosing comma-separated values within square brackets ([]). Lists allow for dynamic resizing, element insertion, deletion, and modification.

Example of List

``````fruits = ["apple", "banana", "orange"]
fruits.append("grape")  # Append is used for adding to the list
print(fruits)  # Output: ["apple", "banana", "orange", "grape"]
``````

Tuples (tuple): Tuples are similar to lists, but they are immutable, meaning they cannot be modified once created. Tuples are defined by enclosing comma-separated values within brackets(()). it’s useful when you want to store related data that should not be changed, such as coordinates or database records.

Example of Tuples

``````A = (10, 20, 30, 40, 50)
x = A[0] # Accessing the first element of the tuple
print(x)  # Output: 10
``````

## Mapping Data Type

Dictionaries in Python are like real-world dictionaries. They associate values with unique keys, just like words and their meanings.

Here, I created a dictionary function to store fruit prices, where the fruit names are the keys and the prices are the values. You can easily access the price of a specific fruit by using its key. Dictionaries are useful for organizing and retrieving data based on unique identifiers. They provide a fast and efficient way to store and retrieve values.

Example of Dictionary

``````def fruit_price_lookup():
fruit_prices = {
"apple": 300,
"banana": 180,
"orange": 280,
"grapes": 189,
"mango": 330,
"pineapple": 340,
"strawberry": 374,
"watermelon": 149
}

# Prompt user for input
fruit = input("Enter a fruit name: ")

# Check if the fruit exists in the dictionary
if fruit in fruit_prices:
price = fruit_prices[fruit]
print("The price of", fruit, "is:", price, "Rupee")
else:
print("Sorry, the price for", fruit, "is not available.")

# Call the function
fruit_price_lookup()``````

## Set Data Types

Sets in Python are mutable, which means you can modify their elements after creation. They can store any hashable data type, such as integers, strings, or even custom objects. The key feature of sets is that they only contain unique elements. If you try to add a duplicate element to a set, it will be ignored. Sets are useful when you need to perform operations like union, intersection, and difference between multiple sets. They provide efficient methods for these operations, making set manipulation a breeze.

Frozen sets, on the other hand, are immutable sets. Once created, you cannot modify their elements. This immutability makes them suitable for situations where you need to use sets as keys in dictionaries or as elements in other sets. Since frozen sets are immutable, they guarantee that the elements within them won’t change, ensuring the integrity of data structures that rely on them.

Set Data Types Example

In the Python code, I created a set, add and remove elements, and perform set operations like union, intersection, and difference. Then, I create a frozen set and use it as a key in a dictionary.

``````# Creating a set
my_set = set([1, 2, 3, 4, 4, 5])
print(my_set)  # Output: {1, 2, 3, 4, 5}

# Adding elements to a set
print(my_set)  # Output: {1, 2, 3, 4, 5, 6}

# Removing an element from a set
my_set.remove(6)
print(my_set)  # Output: {1, 2, 3, 4, 5}

# Performing set operations
set1 = set([1, 2, 3, 4, 5])
set2 = set([4, 5, 6, 7, 8])

union_set = set1.union(set2)
print(union_set)  # Output: {1, 2, 3, 4, 5, 6, 7, 8}

intersection_set = set1.intersection(set2)
print(intersection_set)  # Output: {4, 5}

difference_set = set1.difference(set2)
print(difference_set)  # Output: {1, 2, 3}

# Creating a frozen set
frozen_set = frozenset([1, 2, 3, 4, 5])
print(frozen_set)  # Output: frozenset({1, 2, 3, 4, 5})

# Using frozen set as a key in a dictionary
my_dict = {frozen_set: "Hello"}
print(my_dict)  # Output: {frozenset({1, 2, 3, 4, 5}): 'Hello'}
``````

## Boolean Data Type

The boolean data type in Python represents truth values, and it has only two possible values: True and False. Booleans are fundamental for logical operations and controlling the flow of a program.

The value True represents a true or positive condition, while the value False represents a false or negative condition. These values are used to evaluate logical expressions and make decisions in programming.

Booleans are commonly used in logical operations such as AND, OR, and NOT. The AND operator returns True if both operands are True, the OR operator returns True if at least one operand is True, and the NOT operator returns the opposite boolean value.

Boolean Example

Here I created a function that shows that if you are reading, it is a good habit, which is True. If you are not reading, it is a bad habit, which is False.

``````# Boolean variables

# Printing boolean values

# Logical operations

# Comparison operators
x = 10
y = 20
print(x == y)  # Output: False
print(x < y)  # Output: True
print(x >= y)  # Output: False

# Control flow using boolean expressions
print("It's a good habit")
else:
print("It's not a good habit.")``````

More examples to understand

``````def perform_calculations(x, y):
# Integer data type
result1 = x + y

# Float data type
result2 = x / y

# Double data type (not explicitly specified in Python)
result3 = x ** y

# Long data type (not explicitly specified in Python)
result4 = x * y

# Short data type (not explicitly specified in Python)
result5 = x - y

return result1, result2, result3, result4, result5
result = perform_calculations(10, 3)
print(result)
``````

## More example

Here, I created a `def` function in which the user can enter any type of data, such as a string, float, integer, or complex number. The function will then return the data type of the input.

``````def get_data_type(value):
if isinstance(value, str):
return "string"
elif isinstance(value, int):
return "integer"
elif isinstance(value, float):
return "float"
elif isinstance(value, complex):
return "complex"
else:
return "other"

user_input = input("Enter a value: ")
data_type = get_data_type(eval(user_input))
print("Data type:", data_type)
``````