Problem
You need to assign multiple variables at once or unpack sequences like tuples and lists into separate variables.
Solution
# Basic multiple assignment
x, y, z = 1, 2, 3
print(x, y, z) # 1 2 3
# Swap variables without temp variable
a, b = 10, 20
a, b = b, a
print(a, b) # 20 10
# Unpack tuples and lists
coordinates = (5, 10)
x, y = coordinates
print(f"x: {x}, y: {y}") # x: 5, y: 10
# Unpack function returns
def get_name_age():
return "John", 25
name, age = get_name_age()
print(f"{name} is {age} years old")
# Use underscore for unwanted values
data = ("John", 25, "Engineer", "NYC")
name, age, _, city = data
print(f"{name}, {age}, {city}") # John, 25, NYC
# Star operator for remaining items
numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers
print(f"First: {first}") # First: 1
print(f"Middle: {middle}") # Middle: [2, 3, 4]
print(f"Last: {last}") # Last: 5
# Unpack dictionaries
person = {"name": "Alice", "age": 30}
name, age = person.values()
print(f"{name}: {age}") # Alice: 30
# Nested unpacking
nested = [(1, 2), (3, 4), (5, 6)]
for x, y in nested:
print(f"x={x}, y={y}")
# Enumerate unpacking
items = ['a', 'b', 'c']
for index, value in enumerate(items):
print(f"{index}: {value}")
Explanation
Multiple assignment uses tuple packing/unpacking internally. The star operator *
collects remaining items into a list. Use underscores _
for values you don't need.
This syntax makes code more readable and eliminates the need for temporary variables when swapping or extracting values from sequences.
Top comments (0)