Hướng dẫn how do you pick a random element from a list without repetition in python? - làm thế nào để bạn chọn một phần tử ngẫu nhiên từ một danh sách mà không lặp lại trong python?

Thay vì

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
8 trong vòng
>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
9, hãy sử dụng
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
0 ở đây.

Bằng cách này, danh sách của bạn được đảm bảo là có tất cả các yếu tố, đồng thời duy trì yêu cầu của thứ tự ngẫu nhiên:

>>> import random
>>> tab = ["house", "word", "computer", "table", "cat", "enter", "space"]
>>> random.shuffle(tab)
>>> print tab

Đối với mã ban đầu của bạn, điều đó sẽ không hoạt động, vì khối

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
1 khi bạn đã viết đảm bảo rằng không có phần tử nào được thêm trong danh sách
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
2. Bạn có thể sửa điều đó bằng cách loại bỏ khối khác như bên dưới:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter

Nhưng bây giờ bạn sẽ cần thay đổi logic để các lần chạy trong cùng một giá trị được trả về ngẫu nhiên không ảnh hưởng đến số lượng đầu ra.

Giới thiệu

Chọn một phần tử hoặc giá trị ngẫu nhiên từ danh sách là một nhiệm vụ chung - có thể là kết quả ngẫu nhiên từ danh sách các đề xuất hoặc chỉ là một lời nhắc ngẫu nhiên.

Trong bài viết này, chúng ta sẽ xem xét cách chọn ngẫu nhiên các yếu tố từ danh sách trong Python. Chúng tôi sẽ bao gồm việc truy xuất cả hai yếu tố ngẫu nhiên số ít, cũng như truy xuất nhiều yếu tố - có và không có sự lặp lại.

Chọn một phần tử ngẫu nhiên từ danh sách Python

Cách tiếp cận trực quan và tự nhiên nhất để giải quyết vấn đề này là tạo ra một số ngẫu nhiên hoạt động như một chỉ mục để truy cập một phần tử từ danh sách.

Để thực hiện phương pháp này, hãy xem xét một số phương pháp để tạo số ngẫu nhiên trong Python:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
3 và
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
4. Chúng ta cũng có thể sử dụng
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
5 và cung cấp một điều khác - dẫn đến một yếu tố ngẫu nhiên từ đó có thể được trả lại.

Sử dụng ngẫu nhiên.randint ()

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
6 Trả về một số nguyên ngẫu nhiên giữa bao gồm
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
7 và
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
8.

Chúng tôi sẽ muốn chỉ mục ngẫu nhiên trong phạm vi

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
9 đến
e
c
f
a
0, để có một chỉ mục ngẫu nhiên của một phần tử trong danh sách:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])

Chạy mã này nhiều lần mang lại cho chúng tôi:

e
c
f
a

Sử dụng ngẫu nhiên.randrange ()

e
c
f
a
1 là một phương thức khác trả về số ngẫu nhiên
e
c
f
a
2 sao cho
e
c
f
a
3:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])

Chạy mã này nhiều lần sẽ tạo ra một cái gì đó dọc theo các dòng:

f
d
d
e

Khi

e
c
f
a
4 trả về một số được tạo ngẫu nhiên trong phạm vi
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
9 đến
e
c
f
a
6, chúng tôi sử dụng nó để truy cập một phần tử một cách ngẫu nhiên trong
e
c
f
a
7, giống như chúng tôi đã làm trong phương pháp trước đó.

Cách tiếp cận này đơn giản hơn một chút so với lần trước, đơn giản vì chúng tôi không chỉ định điểm bắt đầu, mặc định là

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
9.

Sử dụng ngẫu nhiên.choice ()

Bây giờ, một giải pháp thậm chí còn tốt hơn so với trước đây là sử dụng

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])
5 vì đây chính là chức năng được thiết kế để giải quyết vấn đề này:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.choice(letters))

Chạy nhiều lần này kết quả trong:

b
e
e
f
e

Chọn nhiều hơn một phần tử ngẫu nhiên từ danh sách Python

Sử dụng ngẫu nhiên.sample ()

Phương pháp đầu tiên mà chúng ta có thể sử dụng để chọn nhiều phần tử một cách ngẫu nhiên là

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
0. Nó tạo ra một mẫu, dựa trên số lượng mẫu chúng tôi muốn quan sát:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.sample(letters, 3))

Điều này trả về một danh sách:

['d', 'c', 'a']

Phương pháp này chọn các yếu tố mà không cần thay thế, tức là, nó chọn mà không sao chép và lặp lại.

Nếu chúng ta chạy cái này:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
0

Vì nó không trả lại bản sao, nó sẽ chỉ trả lại toàn bộ danh sách của chúng tôi theo thứ tự ngẫu nhiên:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
1

Sử dụng ngẫu nhiên.choices ()

Tương tự như hàm trước,

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
1 trả về một danh sách các phần tử được chọn ngẫu nhiên từ một số ít nhất định. Mặc dù vậy, nó không theo dõi các yếu tố đã chọn, vì vậy bạn cũng có thể nhận được các yếu tố trùng lặp:

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
2

Điều này trả về một cái gì đó dọc theo các dòng của:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
3

Ngoài ra, nếu chúng ta chạy:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
4

Nó có thể trả lại một cái gì đó như:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
5

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
2 Trả về một danh sách các yếu tố ____ 43 được chọn ngẫu nhiên với sự thay thế.

Phương pháp này cũng có thể được sử dụng thực hiện các lựa chọn ngẫu nhiên có trọng số mà bạn có thể khám phá thêm trong tài liệu Python chính thức.

Chọn các yếu tố N ngẫu nhiên không có sự lặp lại

Nếu bạn đang tìm cách tạo ra các bộ sưu tập ngẫu nhiên các yếu tố N, không có sự lặp lại, nhiệm vụ dường như phức tạp hơn các nhiệm vụ trước đó, nhưng trong thực tế - nó khá đơn giản.

Bạn

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
4 Danh sách và phân vùng nó thành N phần. Điều này đảm bảo rằng không có các yếu tố trùng lặp được thêm vào, vì bạn chỉ cắt danh sách và chúng tôi đã xáo trộn nó để các bộ sưu tập là ngẫu nhiên.

Nếu bạn muốn đọc thêm về việc chia danh sách thành các khối ngẫu nhiên hãy xem - làm thế nào để chia một danh sách thành các khối thậm chí trong Python.

Chúng tôi sẽ lưu kết quả trong một danh sách mới và nếu không có đủ các yếu tố để phù hợp với bộ sưu tập cuối cùng, thì nó sẽ chỉ còn dang dở:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
6

Điều này dẫn đến một danh sách các cặp ngẫu nhiên, không có sự lặp lại:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter
7

Sự kết luận

Trong bài viết này, chúng tôi đã khám phá một số cách để truy xuất một hoặc nhiều phần tử được chọn ngẫu nhiên từ danh sách trong Python.

Chúng tôi đã truy cập danh sách trong các chỉ số ngẫu nhiên bằng cách sử dụng

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
5 và
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
6, nhưng cũng có các phần tử ngẫu nhiên bằng cách sử dụng
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
7 và
import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])
8.

Làm thế nào để bạn chọn một phần tử ngẫu nhiên từ một danh sách mà không cần lặp lại trong Python?

Sử dụng hàm ngẫu nhiên.sample () Khi bạn muốn chọn nhiều mục ngẫu nhiên từ danh sách mà không cần lặp lại hoặc sao chép. Có một sự khác biệt giữa lựa chọn () và lựa chọn (). Các lựa chọn () đã được thêm vào Python 3.6 để chọn n phần tử từ danh sách một cách ngẫu nhiên, nhưng chức năng này có thể lặp lại các mục. when you want to choose multiple random items from a list without repetition or duplicates. There is a difference between choice() and choices() . The choices() was added in Python 3.6 to choose n elements from the list randomly, but this function can repeat items.

Làm thế nào để bạn chọn một mục ngẫu nhiên từ một danh sách mà không có sự lựa chọn trong Python?

Sử dụng Random.RandRange () để chọn giá trị ngẫu nhiên từ danh sách.ngẫu nhiên.Phương thức randrange () được sử dụng để tạo một số ngẫu nhiên trong một phạm vi đã cho, chúng ta có thể chỉ định phạm vi là 0 đến độ dài của danh sách và nhận chỉ mục, sau đó là giá trị tương ứng. randrange() to select random value from a list. random. randrange() method is used to generate a random number in a given range, we can specify the range to be 0 to the length of the list, and get the index, and then the corresponding value.

Làm thế nào để bạn tạo ra một số ngẫu nhiên mà không cần lặp lại trong Python?

Nhập khẩu Numpy dưới dạng NP;NP.ngẫu nhiên.hoán vị (100) [: 10] cũng tạo ra 10 số được chọn từ 0 đến 99, không có bản sao.

Làm thế nào để bạn chọn một mục ngẫu nhiên từ một danh sách trong Python?

Chọn các phần tử n ngẫu nhiên từ danh sách bằng cách sử dụng phương thức lựa chọn () được sử dụng để trả về một số ngẫu nhiên từ chuỗi đã cho.Trình tự có thể là một danh sách hoặc một tuple.Điều này trả về một giá trị duy nhất từ dữ liệu có sẵn xem xét các giá trị trùng lặp trong chuỗi (danh sách).using choice() The choice() method is used to return a random number from given sequence. The sequence can be a list or a tuple. This returns a single value from available data that considers duplicate values in the sequence(list).