Làm thế nào để bạn xáo trộn một danh sách trong python?

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để xáo trộn danh sách, từ đó ngẫu nhiên hóa các phần tử danh sách Python. Đối với điều này, bạn sẽ học cách sử dụng thư viện Python random, đặc biệt là các phương thức .shuffle[].random[]

Biết cách xáo trộn danh sách và tạo ra kết quả ngẫu nhiên là một kỹ năng cực kỳ hữu ích. Ví dụ: nó có thể cực kỳ hữu ích trong việc phát triển trò chơi Python mà bạn cần chọn một kết quả ngẫu nhiên. Nó cũng có thể có các ứng dụng vô cùng hữu ích trong công việc liên quan đến dữ liệu, nơi bạn có thể cần lấy kết quả ngẫu nhiên

Câu trả lời nhanh. Sử dụng random.shuffle[]

Mục lục

Đâu là sự khác biệt giữa. xáo trộn và. vật mẫu?

Python được tích hợp sẵn một thư viện cực kỳ hữu ích để tạo tính ngẫu nhiên, được gọi là random. Trong suốt hướng dẫn này, bạn sẽ học cách sử dụng các hàm random.shuffle[]

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
1. Tuy nhiên, trước khi chúng tôi đi sâu vào cách sử dụng chúng, hãy nhanh chóng khám phá sự khác biệt là gì

Cả hai hàm đều trả về một danh sách được sắp xếp ngẫu nhiên, nhưng cách chúng trả về chúng là khác nhau

  • random.shuffle[] xáo trộn danh sách ban đầu, nghĩa là việc xáo trộn có thể được thực hiện tại chỗ
  • # Shuffle a list using random.sample[]
    import random
    
    a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
    shuffled = random.sample[a_list, len[a_list]]
    
    print[shuffled]
    # Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
    1 trả về một danh sách xáo trộn mới, dựa trên danh sách ban đầu

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
1 cũng có thể được sử dụng để xáo trộn các chuỗi và bộ dữ liệu, vì nó tạo ra một danh sách mới, do đó cho phép bạn làm việc trên các kiểu dữ liệu không thay đổi

Bây giờ, hãy đi sâu vào cách xáo trộn danh sách trong Python

Xem một số hướng dẫn Python khác về datagy, bao gồm hướng dẫn đầy đủ của chúng tôi về cách tạo kiểu cho Pandas và tổng quan toàn diện của chúng tôi về Pivot Tables trong Pandas

Xáo trộn danh sách Python và gán lại cho chính nó

Hàm random.shuffle[] giúp dễ dàng xáo trộn các mục trong danh sách bằng Python. Vì chức năng hoạt động tại chỗ, chúng tôi không cần gán lại danh sách cho chính nó, nhưng nó cho phép chúng tôi dễ dàng ngẫu nhiên hóa các phần tử danh sách

Hãy xem cái này trông như thế nào

# Shuffle a list using random.shuffle[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
random.shuffle[a_list]

print[a_list]
# Returns: ['more', 'will', 'Python', 'welcome', 'learn', 'you', 'where', 'to', 'datagy', 'and']

Những gì chúng tôi đã làm ở đây là

  1. Tạo một danh sách mới
  2. Đã áp dụng hàm random.shuffle[] cho nó
  3. In kết quả để xác minh việc xáo trộn

Hãy ghi nhớ, nếu bạn đang làm theo ví dụ trên, danh sách được sắp xếp ngẫu nhiên của bạn có thể trông sẽ khác

Trong phần tiếp theo, bạn sẽ học cách sử dụng hàm

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
1 để chọn ngẫu nhiên một danh sách trong Python

Bạn muốn tìm hiểu thêm về cách hiểu danh sách Python? . Thêm một người học trực quan, hãy xem hướng dẫn YouTube của tôi tại đây

Xáo trộn danh sách Python và gán nó vào danh sách mới

Hàm

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
1 được sử dụng để lấy mẫu một số mục đã đặt từ một đối tượng giống như chuỗi trong Python. Chức năng chọn các mục này một cách ngẫu nhiên

Hãy xem nhanh chức năng này trông như thế nào

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
9

Trong trường hợp này, iterable sẽ là danh sách chúng tôi muốn xáo trộn và

# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
0 đề cập đến số mục chúng tôi muốn chọn. Bởi vì chúng tôi muốn trả về danh sách đầy đủ theo thứ tự ngẫu nhiên, chúng tôi sẽ chuyển độ dài của danh sách vào tham số
# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
0

Hãy xem cách chúng ta có thể sử dụng hàm

# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
2 để chọn ngẫu nhiên một danh sách Python

# Shuffle a list using random.sample[]
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
shuffled = random.sample[a_list, len[a_list]]

print[shuffled]
# Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']

Hãy xem cách chúng tôi quản lý để ngẫu nhiên hóa các phần tử danh sách Python của chúng tôi

  1. Chúng tôi đã tạo danh sách của mình và chỉ định nó cho
    # Reproducing a randomly shuffled list in Python
    import random
    
    a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
    
    random.seed[1]
    
    for i in range[5]:
        random.shuffle[a_list]
        print[a_list]
    
    # Returns:
    # ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
    # ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
    # ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
    # ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
    # ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
    3
  2. Chúng tôi đã tạo một biến mới
    # Reproducing a randomly shuffled list in Python
    import random
    
    a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
    
    random.seed[1]
    
    for i in range[5]:
        random.shuffle[a_list]
        print[a_list]
    
    # Returns:
    # ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
    # ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
    # ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
    # ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
    # ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
    4 nhận chức năng
    # Shuffle a list using random.sample[]
    import random
    
    a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
    shuffled = random.sample[a_list, len[a_list]]
    
    print[shuffled]
    # Returns: ['where', 'you', 'welcome', 'to', 'more', 'Python', 'and', 'datagy', 'will', 'learn']
    1. Chúng tôi đã chuyển danh sách và độ dài của danh sách vào hàm. Bằng cách sử dụng hàm
    # Reproducing a randomly shuffled list in Python
    import random
    
    a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']
    
    random.seed[1]
    
    for i in range[5]:
        random.shuffle[a_list]
        print[a_list]
    
    # Returns:
    # ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
    # ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
    # ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
    # ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
    # ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
    6, chúng tôi có thể giữ cho phương thức này luôn động vì độ dài của danh sách có thể thay đổi

Trong phần tiếp theo, bạn sẽ tìm hiểu cách tạo lại kết quả danh sách đã xáo trộn trong Python

Bạn muốn tìm hiểu cách in đẹp tệp JSON bằng Python?

Tái tạo kết quả danh sách Python được xáo trộn

Khi làm việc với các kết quả ngẫu nhiên, có thể có lúc bạn muốn tái tạo kết quả. Trong ví dụ dưới đây, bạn sẽ tìm hiểu cách có thể sao chép danh sách đã xáo trộn

Chúng tôi sẽ sử dụng hàm

# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
7 để tạo kết quả có thể lặp lại

Hãy xem cái này trông như thế nào

# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']

Bây giờ, có vẻ như danh sách được in ra không phải là ngẫu nhiên. Tuy nhiên, nếu chúng tôi chạy lại chương trình của mình ở trên, chương trình sẽ trả về cùng một danh sách được xáo trộn ngẫu nhiên mỗi lần. Hàm

# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
7 cho phép chúng ta tạo một giá trị cơ sở xác định tính giả ngẫu nhiên của các hàm theo sau nó. Bởi vì, trong trường hợp này, chúng tôi đã gán cho nó một giá trị cụ thể là
# Reproducing a randomly shuffled list in Python
import random

a_list = ['welcome', 'to', 'datagy', 'where', 'you', 'will', 'learn', 'Python', 'and', 'more']

random.seed[1]

for i in range[5]:
    random.shuffle[a_list]
    print[a_list]

# Returns:
# ['learn', 'and', 'more', 'Python', 'will', 'where', 'welcome', 'you', 'to', 'datagy']
# ['will', 'to', 'more', 'welcome', 'where', 'datagy', 'learn', 'you', 'and', 'Python']
# ['you', 'and', 'learn', 'Python', 'datagy', 'will', 'more', 'to', 'welcome', 'where']
# ['to', 'learn', 'welcome', 'and', 'datagy', 'you', 'will', 'where', 'Python', 'more']
# ['welcome', 'to', 'datagy', 'more', 'will', 'where', 'learn', 'you', 'and', 'Python']
9, nên chúng tôi có thể tái tạo tính ngẫu nhiên

Trong phần tiếp theo, bạn sẽ tìm hiểu cách xáo trộn danh sách các danh sách trong Python

Bạn muốn tìm hiểu thêm về vòng lặp for Python? . Thay vào đó, bạn muốn xem một video?

Xáo trộn danh sách danh sách Python

Trong Python, bạn sẽ thường gặp danh sách đa chiều, thường được gọi là danh sách của danh sách. Chúng ta có thể dễ dàng làm điều này bằng cách sử dụng vòng lặp for. Bằng cách lặp qua từng danh sách trong danh sách danh sách, sau đó chúng ta có thể dễ dàng áp dụng hàm random.shuffle[] để ngẫu nhiên hóa các phần tử của từng danh sách con

Hãy xem cái này trông như thế nào

# Shuffling a list of lists in Python
import random

a_list = [['apple', 'orange', 'grape'], ['banana', 'melon', 'tangerine'], ['lime', 'lemon', 'strawberry']]

for sublist in a_list:
    random.shuffle[sublist]

print[a_list]

# Returns: [['grape', 'orange', 'apple'], ['melon', 'banana', 'tangerine'], ['strawberry', 'lemon', 'lime']]

Mặc dù chúng tôi cũng có thể thực hiện việc này bằng cách sử dụng khả năng hiểu danh sách, nhưng cú pháp không chỉ định lại khả năng hiểu danh sách hơi khó xử và không trực quan. Vì lý do này, chúng tôi đã chọn sử dụng vòng lặp for ở đây vì chúng tôi phải luôn cố gắng để dễ đọc

Trong phần tiếp theo, bạn sẽ tìm hiểu cách xáo trộn nhiều danh sách với cùng một thứ tự xáo trộn

Bạn muốn tìm hiểu cách sử dụng hàm

# Shuffling a list of lists in Python
import random

a_list = [['apple', 'orange', 'grape'], ['banana', 'melon', 'tangerine'], ['lime', 'lemon', 'strawberry']]

for sublist in a_list:
    random.shuffle[sublist]

print[a_list]

# Returns: [['grape', 'orange', 'apple'], ['melon', 'banana', 'tangerine'], ['strawberry', 'lemon', 'lime']]
1 của Python để lặp qua hai danh sách?

Xáo trộn nhiều danh sách với cùng thứ tự xáo trộn

Giả sử bạn có hai danh sách. một cái có chứa loại trái cây và cái còn lại là số loại trái cây mà bạn có. Bạn muốn xáo trộn các danh sách nhưng bạn muốn tính toàn vẹn tham chiếu vẫn đúng [nghĩa là chỉ mục 0 của cả hai danh sách sẽ được xáo trộn thành cùng một chỉ mục trong kết quả được xáo trộn]

Để thực hiện được điều này, chúng tôi sẽ

  1. Hợp nhất hai danh sách trong một danh sách các danh sách bằng hàm
    # Shuffling a list of lists in Python
    import random
    
    a_list = [['apple', 'orange', 'grape'], ['banana', 'melon', 'tangerine'], ['lime', 'lemon', 'strawberry']]
    
    for sublist in a_list:
        random.shuffle[sublist]
    
    print[a_list]
    
    # Returns: [['grape', 'orange', 'apple'], ['melon', 'banana', 'tangerine'], ['strawberry', 'lemon', 'lime']]
    1
  2. Xáo trộn danh sách các danh sách trong nội bộ
  3. Giải nén danh sách các danh sách thành các danh sách riêng lẻ

Hãy xem làm thế nào chúng ta có thể làm điều này

# Shuffling two lists in the same order
import random

fruits = ['apples', 'grapes', 'oranges', 'bananas']
quantities = [50, 40, 60, 70]

merged = list[zip[fruits, quantities]]
# This looks like: [['apples', 50], ['grapes', 40], ['oranges', 60], ['bananas', 70]]

random.shuffle[merged]

fruits = [item[0] for item in merged]
quantities = [item[1] for item in merged]

print[fruits]
print[quantities]

# Returns:
# ['bananas', 'oranges', 'apples', 'grapes']
# [70, 60, 50, 40]

Chúng ta có thể thấy rằng chúng ta đã tận dụng tốt cả hàm

# Shuffling a list of lists in Python
import random

a_list = [['apple', 'orange', 'grape'], ['banana', 'melon', 'tangerine'], ['lime', 'lemon', 'strawberry']]

for sublist in a_list:
    random.shuffle[sublist]

print[a_list]

# Returns: [['grape', 'orange', 'apple'], ['melon', 'banana', 'tangerine'], ['strawberry', 'lemon', 'lime']]
1 cũng như khả năng hiểu danh sách của Python để thực hiện điều này

Cần tự động đổi tên tập tin? . Hơn cả một người học trực quan, toàn bộ hướng dẫn cũng có sẵn dưới dạng video trong bài đăng

Phần kết luận

Trong hướng dẫn này, bạn đã học cách sử dụng Python để xáo trộn ngẫu nhiên một danh sách, từ đó sắp xếp các mục của nó theo thứ tự ngẫu nhiên. Đối với điều này, bạn đã học cách sử dụng thư viện Python random, đặc biệt là các phương thức .shuffle[].random[]

Chủ Đề