Bạn có thể xáo trộn danh sách bằng Python không?

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách xáo trộn danh sách các đối tượng trong python. Dưới đây là các phương pháp khác nhau để hoàn thành nhiệm vụ này

  • Sử dụng ngẫu nhiên. chức năng xáo trộn []

  • Sử dụng ngẫu nhiên. hàm mẫu[]

  • Sử dụng thuật toán xáo trộn Fisher–Yates

  • Sử dụng ngẫu nhiên. hàm randint[] và pop[]

Giả sử chúng ta đã lấy một danh sách chứa một số phần tử. Chúng tôi sẽ xáo trộn các phần tử của danh sách một cách ngẫu nhiên bằng các phương pháp khác nhau như đã chỉ định ở trên

Sử dụng ngẫu nhiên. chức năng xáo trộn []

Phương thức shuffle[] trong module ngẫu nhiên dùng để xáo trộn danh sách. Nó nhận một trình tự, chẳng hạn như một danh sách và sắp xếp lại thứ tự của các mục

Phương thức shuffle[] này thay đổi danh sách ban đầu, nó không trả về danh sách mới. Thứ tự của danh sách bị mất trong quá trình này, đây là nhược điểm duy nhất của phương pháp này

cú pháp

random.shuffle[sequence, function]

Thông số

  • trình tự - bất kỳ trình tự nào như danh sách, bộ dữ liệu, v.v.

  • hàm [tùy chọn] - tên của hàm trả về giá trị trong khoảng từ 0. 0 và 1. 0. Hàm random[] sẽ được sử dụng nếu nó không được chỉ định

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –

  • Sử dụng từ khóa nhập để nhập mô-đun ngẫu nhiên

  • Tạo một biến để lưu trữ danh sách đầu vào

  • In danh sách đầu vào

  • Sử dụng ngẫu nhiên. shuffle[] để xáo trộn tất cả các thành phần danh sách một cách ngẫu nhiên bằng cách chuyển danh sách làm đối số cho nó

  • In danh sách xáo trộn kết quả

Thí dụ

Chương trình sau trả về danh sách đã xáo trộn bằng cách sử dụng ngẫu nhiên. hàm shuffle[]–

đầu ra

Khi thực thi, chương trình trên sẽ tạo ra đầu ra sau -

Input list: [3, 10, 5, 9, 2]
Shuffled list: [9, 3, 10, 2, 5]

Sử dụng ngẫu nhiên. hàm mẫu[]

sự ngẫu nhiên. phương thức sample[] trong python trả về một danh sách được xáo trộn mới. Danh sách ban đầu không thay đổi

sự ngẫu nhiên. phương thức sample[] trả về một danh sách chứa một số phần tử được chọn ngẫu nhiên từ một chuỗi

cú pháp

random.sample[sequence, k]

Thông số

  • trình tự - bất kỳ trình tự nào như danh sách, bộ dữ liệu, v.v.

  • k - số phần tử cần trả về

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –

  • Sử dụng từ khóa nhập để nhập mô-đun ngẫu nhiên

  • Sử dụng ngẫu nhiên. hàm sample[] để xáo trộn ngẫu nhiên tất cả các thành phần danh sách bằng cách chuyển danh sách đầu vào và độ dài của danh sách đầu vào bằng hàm len[] [Số lượng mục trong một đối tượng được phương thức len[] trả về] làm đối số

  • In danh sách xáo trộn kết quả

Thí dụ

Chương trình sau trả về danh sách đã xáo trộn bằng cách sử dụng ngẫu nhiên. hàm shuffle[]–

đầu ra

Khi thực thi, chương trình trên sẽ tạo ra đầu ra sau -

Input list: [3, 10, 5, 9, 2]
Shuffled list: [2, 5, 9, 10, 3]

Sử dụng thuật toán xáo trộn Fisher-Yates

Đây là một thuật toán nổi tiếng trong Python được sử dụng để xáo trộn một dãy số

Thuật toán xáo trộn Fisher-Yates

Thuật toán xáo trộn Fisher-Yates có độ phức tạp thời gian là O[n]. Giả định là chúng ta được cung cấp hàm rand[], hàm này tạo ra một số ngẫu nhiên trong thời gian O[1]. Ý tưởng là bắt đầu với phần tử cuối cùng và hoán đổi nó với một phần tử được chọn ngẫu nhiên từ toàn bộ mảng [bao gồm cả phần tử cuối cùng]. Xem xét mảng từ 0 đến n-2 [với kích thước giảm đi một] và lặp lại quy trình cho đến khi chúng ta đạt được phần tử đầu tiên

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –

  • Sử dụng vòng lặp for để duyệt từ cuối danh sách bằng hàm len[] [trả về số mục trong một đối tượng]

  • Lấy chỉ mục ngẫu nhiên cho đến giá trị chỉ mục hiện tại bằng cách sử dụng ngẫu nhiên. phương thức randint[][Trả về một số ngẫu nhiên trong phạm vi đã chỉ định]

  • Hoán đổi phần tử chỉ mục hiện tại với phần tử tại một chỉ mục ngẫu nhiên

  • In danh sách xáo trộn kết quả

Thí dụ

Chương trình sau đây trả về danh sách được xáo trộn bằng Thuật toán xáo trộn Fisher-Yates –

đầu ra

Khi thực thi, chương trình trên sẽ tạo ra đầu ra sau -

Input list: [3, 10, 5, 9, 2]
Shuffled list: [9, 10, 3, 5, 2]

Sử dụng ngẫu nhiên. hàm randint[] và pop[]

ngẫu nhiên. randint[] - Trả về một số ngẫu nhiên trong phạm vi đã chỉ định

Thí dụ

Chương trình sau trả về danh sách đã xáo trộn bằng cách sử dụng ngẫu nhiên. hàm randint[] và pop[] –

đầu ra

Khi thực thi, chương trình trên sẽ tạo ra đầu ra sau -

Input list: [3, 10, 5, 9, 2]
Shuffled list: [10, 2, 3, 5, 9]

Sự kết luận

Trong bài viết này, chúng ta đã học bốn phương thức Python khác nhau để xáo trộn danh sách đã cho. Chúng ta cũng đã tìm hiểu về thuật toán Fisher-Yates cho danh sách xáo trộn và cách sử dụng thuật toán này trong Python

Chủ Đề