Dùng * và zip để "gỡ zip"
Bạn đã biết dùng zip() và cách in ra các giá trị từ một đối tượng zip. Tuyệt vời!
Hãy nghịch thêm với zip() một chút. Không có hàm unzip để làm ngược lại những gì zip() thực hiện. Tuy nhiên, ta có thể đảo ngược những gì đã được "zip" lại bằng cách dùng zip() với một chút trợ giúp từ *! * sẽ bung một iterable như list hoặc tuple thành các đối số theo vị trí trong lời gọi hàm.
Trong bài tập này, bạn sẽ dùng * trong một lời gọi zip() để bung các tuple do zip() tạo ra.
Hai tuple chuỗi, mutants và powers, đã được nạp sẵn.
Bài tập này là một phần của khóa học
Hộp Công Cụ Python
Hướng dẫn bài tập
- Tạo một đối tượng
zipbằng cách gọizip()vớimutantsvàpowers, theo đúng thứ tự đó. Gán kết quả choz1. - In các tuple trong
z1bằng cách bung chúng thành các đối số theo vị trí bằng toán tử*trong một lời gọiprint(). - Vì lời gọi
print()trước đó sẽ dùng hết các phần tử trongz1, hãy tạo lại đối tượngzipbạn đã định nghĩa trước và lại gán kết quả choz1. - "Gỡ zip" các tuple trong
z1bằng cách bung chúng thành các đối số theo vị trí bằng toán tử*trong một lời gọizip(). Gán kết quả lần lượt choresult1vàresult2. - Các câu lệnh
print()cuối cùng sẽ in kết quả so sánhresult1vớimutantsvàresult2vớipowers. BấmGửi câu trả lờiđể xemresult1vàresult2sau khi bung có tương đương vớimutantsvàpowerstương ứng hay không.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Create a zip object from mutants and powers: z1
z1 = ____
# Print the tuples in z1 by unpacking with *
print(____)
# Re-create a zip object from mutants and powers: z1
z1 = ____
# 'Unzip' the tuples in z1 by unpacking with * and zip(): result1, result2
result1, result2 = ____
# Check if unpacked tuples are equivalent to original tuples
print(result1 == mutants)
print(result2 == powers)