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

Lặp tuple N lần trong Python

Khi cần lặp lại một tuple N lần, toán tử * (nhân) có thể sử dụng.

Tuple là kiểu dữ liệu bất biến (immutable): không thể thay đổi phần tử sau khi tạo. Toán tử * trên tuple thực hiện lặp lại nội dung.

Ví dụ

my_tuple = (11, 14, 0)
print(f"Tuple gốc: {my_tuple}")

N = 5
print(f"Số lần lặp N = {N}")

# Nhân tuple: lặp lại N lần
# Lưu ý: (my_tuple,) tạo tuple chứa 1 phần tử là my_tuple
# (my_tuple,) * N -> tuple chứa N bản sao của my_tuple
result = (my_tuple,) * N

print(f"\nTuple sau khi lặp {N} lần:")
print(result)
print(f"Kiểu: {type(result)}")
print(f"Độ dài: {len(result)}")

Kết quả

Tuple gốc: (11, 14, 0)
Số lần lặp N = 5
Tuple sau khi lặp 5 lần:
((11, 14, 0), (11, 14, 0), (11, 14, 0), (11, 14, 0), (11, 14, 0))
Kiểu: <class 'tuple'>
Độ dài: 5

Giải thích

  • (my_tuple,) tạo tuple đơn phần tử chứa my_tuple (cần dấu phẩy).
  • (my_tuple,) * N lặp tuple đơn phần tử N lần -> tuple N phần tử, mỗi phần tử là my_tuple.
  • Kết quả là tuple của các tuple (nested tuple).

Nếu muốn làm phẳng (flatten) thành tuple đơn

# Cách 1: sum() với tuple rỗng làm khởi tạo
flat = sum((my_tuple,) * N, ())
print(flat)  # (11, 14, 0, 11, 14, 0, 11, 14, 0, 11, 14, 0, 11, 14, 0)

# Cách 2: itertools.chain (hiệu quả hơn)
from itertools import chain
flat = tuple(chain.from_iterable((my_tuple,) * N))
print(flat)

# Cách 3: List comprehension
flat = tuple(x for _ in range(N) for x in my_tuple)
print(flat)

Lặp từng phần tử riêng lẻ

# Mỗi phần tử lặp N lần: (11,11,11,11,11, 14,14,14,14,14, 0,0,0,0,0)
repeated_elements = tuple(elem for elem in my_tuple for _ in range(N))
print(repeated_elements)

# Hoặc dùng numpy
import numpy as np
print(tuple(np.repeat(my_tuple, N)))

Ứng dụng: Tạo dữ liệu test

# Tạo pattern test: (A, B, C) lặp 100 lần
pattern = ('A', 'B', 'C')
test_data = pattern * 100  # Tuple 300 phần tử
print(len(test_data))  # 300