Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chuyển đổi tuple thành số nguyên trong Python

Khi cần chuyển đổi một tuple thành số nguyên (integer), có thể sử dụng hàm lambda kết hợp với hàm reduce từ module functools.

Hàm vô danh (anonymous function) là hàm được định nghĩa không có tên. Hàm reduce nhận hai tham số: một hàm và một sequence, áp dụng hàm đó lên tất cả các phần tử của sequence. Nó nằm trong module functools.

Thông thường, hàm Python được định nghĩa bằng từ khóa def, nhưng hàm vô danh dùng từ khóa lambda. Nó nhận một biểu thức đơn, nhưng có thể nhận nhiều đối số. Nó dùng biểu thức đó và trả về kết quả.

Ví dụ

import functools

# Tuple chứa các chữ số
my_tuple = (2, 3, 4, 5, 6, 7, 8, 0)
print(f"Tuple ban đầu: {my_tuple}")

# Chuyển tuple thành số nguyên: 23456780
# Logic: sub * 10 + elem (dịch trái và cộng chữ số mới)
my_result = functools.reduce(lambda sub, elem: sub * 10 + elem, my_tuple)

print(f"Sau khi chuyển tuple thành số nguyên: {my_result}")
print(f"Kiểu dữ liệu: {type(my_result)}")

Kết quả

Tuple ban đầu: (2, 3, 4, 5, 6, 7, 8, 0)
Sau khi chuyển tuple thành số nguyên: 23456780
Kiểu dữ liệu: <class 'int'>

Giải thích

  • Import module functools để sử dụng reduce.
  • Tuple (2, 3, 4, 5, 6, 7, 8, 0) đại diện cho các chữ số của số 23456780.
  • Hàm lambda sub, elem: sub * 10 + elem thực hiện: nhân tích lũy cho 10 (dịch trái) và cộng chữ số tiếp theo.
  • reduce áp dụng lambda lần lượt cho từng cặp (giá trị tích lũy, phần tử tiếp theo).
  • Kết quả là số nguyên ghép từ các chữ số trong tuple.

Lưu ý quan trọng

Cách này chỉ hoạt động đúng khi tuple chứa các chữ số đơn lẻ (0-9). Nếu tuple chứa số nhiều chữ số như (23, 45, 12), kết quả sẽ là 2768380 (23*10000 + 45*100 + 12), không phải ghép chuỗi đơn thuần.

Cách thay thế: Ghép chuỗi rồi chuyển int

# Chỉ dùng khi tuple chứa chữ số 0-9
my_tuple = (2, 3, 4, 5)
result = int(''.join(map(str, my_tuple)))
print(result)  # 2345