Giả sử tôi có danh sách 8 đối tượng, đánh số 1-8.Kết hợp lặp vòng lặp của 8 đối tượng thành 3 nhóm, 3-3-2
Các đối tượng được đưa vào ba hộp, 3 trong một hộp, 3 trong một hộp khác, 2 trong hộp cuối cùng. Theo toán học, có 8C3 * 5C3 = 560 cách để làm điều này. Tôi muốn lặp qua đó 560 mục. Có cách nào trong Python làm như vậy không?
Kết quả sẽ giống như thế này:
list=['12','345',678'], ['12','346','578'], ..., etc.
Lưu ý rằng ['12','345','678']
và ['12','354',876']
được coi là tương tự cho mục đích này.
Tôi muốn tạo danh sách cho vòng lặp này. Có cách nào trong Python để làm như vậy?
Đây là giải pháp tôi nhận được, nhưng có vẻ như xấu xí.
import itertools
for c1,c2 in itertools.combinations(range(8),2):
l2=list(range(8))
l2.pop(c2)
l2.pop(c1)
for c3,c4,c5 in itertools.combinations(l2,3):
l3=l2[:]
l3.remove(c5)
l3.remove(c4)
l3.remove(c3)
c6,c7,c8=l3
print(c1,c2,c3,c4,c5,c6,c7,c8)
bạn đã cố gắng giải quyết nó như thế nào? Mã gì? – snapshoe
Bạn có thể itertools http://docs.python.org/2/library/itertools.html và thêm một số logic của riêng bạn. – Pramod
Tôi phải nói rằng tôi không thực sự hiểu câu hỏi của bạn. –