Có cách nào tốt hơn để ngẫu nhiên trộn hai danh sách có liên quan mà không vi phạm thư của chúng trong danh sách khác không? Tôi đã tìm thấy các câu hỏi có liên quan trong số numpy.array
và c#
nhưng không giống chính xác câu hỏi đó.Cách tốt hơn để trộn hai danh sách liên quan
Là một thử đầu tiên, một zip
lừa đơn giản sẽ làm:
import random
a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
b = [2, 4, 6, 8, 10]
c = zip(a, b)
random.shuffle(c)
a = [e[0] for e in c]
b = [e[1] for e in c]
print a
print b
Nó sẽ nhận được kết quả:
[[1, 2], [7, 8], [3, 4], [5, 6], [9, 10]]
[2, 8, 4, 6, 10]
Chỉ cần tìm thấy nó một chút vụng về. Và nó cũng cần một danh sách bổ sung.
bạn có thể sử dụng 'zip' để giải nén danh sách cũng:' a, b = zip (* c) ' – mgilson
Tôi cũng thường không đề nghị một chương trình thiết kế nơi bạn cần giữ một tập hợp các danh sách song song. Chỉ cần giữ 1 danh sách. Tạo một số loại lớp học hoặc một cái gì đó để thống nhất dữ liệu của bạn. – mgilson
Nếu một người muốn thực hiện công việc đó bằng 'numpy', đây là một giải pháp tốt: http: //stackoverflow.com/questions/4601373/better-way-to-shuffle-two-numpy-arrays-in-unison – Mithril