Giới thiệu
Để tạo ngẫu nhiên N list con, mỗi list kích thước K, từ một list gốc, ta dùng random.shuffle trong generator function với yield.
Ví dụ minh họa
from random import shuffle
def gen_random_list(my_val, K):
while True:
shuffle(my_val)
yield my_val[:K]
my_list = [12, 45, 76, 32, 45, 88, 99, 0, 1]
print("List gốc:", my_list)
K, N = 4, 5
print("K (kích thước list con):", K)
print("N (số list con):", N)
my_result = []
for _ in range(N):
my_result.append(next(gen_random_list(my_list, K)))
print("N list con ngẫu nhiên:")
print(my_result)
Kết quả đầu ra
List gốc: [12, 45, 76, 32, 45, 88, 99, 0, 1] K (kích thước list con): 4 N (số list con): 5 N list con ngẫu nhiên: [[88, 76, 99, 12], [12, 99, 32, 76], [32, 76, 12, 99], [32, 45, 0, 12], [76, 0, 1, 45]]
Giải thích
gen_random_listlà generator vô hạn: mỗi lần shuffle list gốc, yield K phần tử đầu.next(generator)lấy một list con.- Lặp N lần để thu N list con.
- Lưu ý: shuffle thay đổi list gốc in-place, nên các lần sau list đã bị xáo trộn.