Dengan Python, Anda dapat mengambil sampel elemen secara acak dari daftar dengan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 6, print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 7, dan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 8 dari modul print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 9. Fungsi-fungsi ini juga dapat diterapkan pada string dan tuple
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 6 mengembalikan satu elemen acak, dan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 7 dan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 8 mengembalikan daftar beberapa elemen acak. print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 7 digunakan untuk pengambilan sampel acak tanpa penggantian, dan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 8 digunakan untuk pengambilan sampel acak dengan penggantian
- acak — Menghasilkan angka pseudo-acak — Python 3. 8. 1 dokumentasi
Artikel ini menjelaskan konten berikut
- Pilih elemen acak. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _5
- Sampel acak tanpa penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _6
- Sampel acak dengan penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _7
- Inisialisasi generator nomor acak. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _8
Jika Anda ingin memilih elemen dari daftar berdasarkan ketentuan, lihat artikel berikut ini
- Ekstrak, ganti, ubah elemen daftar dengan Python
Jika Anda ingin mengocok seluruh daftar, atau mendapatkan daftar angka acak, lihat artikel berikut
- Kocok daftar, string, tuple dengan Python (acak. acak, sampel)
- Hasilkan int/float acak dengan Python (acak, randrange, randint, dll. )
Tautan Bersponsor
Pilih elemen acak. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _5
# print(random.choice([])) # IndexError: Cannot choose from an empty sequence _5 mengembalikan elemen acak dari daftar
import random l = [0, 1, 2, 3, 4] print(random.choice(l)) # 1
sumber.
Tuple dan string diproses dengan cara yang sama. Dalam kasus string, satu karakter dikembalikan
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b
sumber.
Kesalahan dimunculkan jika daftar, tuple, atau string kosong
# print(random.choice([])) # IndexError: Cannot choose from an empty sequence _
sumber.
Sampel acak tanpa penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _6
# print(random.choice([])) # IndexError: Cannot choose from an empty sequence _6 sampel acak beberapa elemen dari daftar tanpa penggantian
Berikan daftar ke argumen pertama dan jumlah elemen yang ingin Anda dapatkan ke argumen kedua. Sebuah daftar dikembalikan
import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'>
sumber.
Jika argumen kedua disetel ke import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 3, daftar dengan satu elemen dikembalikan. Jika disetel ke import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> _4, daftar kosong dikembalikan. Jika diatur ke nilai yang melebihi jumlah elemen daftar, kesalahan akan muncul
print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative
sumber.
Bahkan jika Anda meneruskan tupel atau string ke argumen pertama, daftar dikembalikan
print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e']
sumber.
Untuk mengonversi daftar menjadi tuple atau string, gunakan import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 5, import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 6
- Konversi daftar dan tupel satu sama lain dengan Python
- Gabungkan string dengan Python (+ operator, gabung, dll. )
print(tuple(random.sample(('xxx', 'yyy', 'zzz'), 2))) # ('yyy', 'xxx') print(''.join(random.sample('abcde', 2))) # de
sumber.
Perhatikan bahwa jika daftar atau tupel asli berisi elemen duplikat, nilai yang sama dapat dipilih
l_dup = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3] print(random.sample(l_dup, 3)) # [3, 1, 1]
sumber.
Jika Anda ingin menghindari nilai duplikat, gunakan import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 7 untuk mengonversi daftar dan tupel menjadi import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 8, ekstrak hanya elemen unik, lalu gunakan print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 7
- Hapus/ekstrak elemen duplikat dari daftar dengan Python
print(set(l_dup)) # {0, 1, 2, 3} print(random.sample(set(l_dup), 3)) # [1, 3, 2]
sumber.
Tautan Bersponsor
Sampel acak dengan penggantian. # print(random.choice([])) # IndexError: Cannot choose from an empty sequence _7
# print(random.choice([])) # IndexError: Cannot choose from an empty sequence _7 sampel acak beberapa elemen dari daftar dengan penggantian
# print(random.choice([])) # IndexError: Cannot choose from an empty sequence _7 ditambahkan di Python 3. 6 dan tidak dapat digunakan di versi sebelumnya
Tentukan jumlah elemen yang ingin Anda dapatkan dengan argumen print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 3. Karena elemen dipilih dengan penggantian, print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 3 bisa lebih besar dari jumlah elemen dalam daftar asli
Karena print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative _3 adalah argumen kata kunci saja, maka perlu untuk menentukan seperti print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 6
import random l = [0, 1, 2, 3, 4] print(random.choices(l, k=3)) # [2, 1, 0] print(random.choices(l, k=10)) # [3, 4, 1, 4, 4, 2, 0, 4, 2, 0]
sumber.
print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative _3 diatur ke import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> 3 secara default. Jika dihilangkan, daftar dengan satu elemen dikembalikan
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b 0
sumber.
Anda dapat menentukan bobot (probabilitas) untuk setiap elemen ke argumen print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 9. Jenis elemen daftar yang ditentukan dalam print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 9 dapat berupa print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 1 atau print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 2. Jika diatur ke import random l = [0, 1, 2, 3, 4] print(random.sample(l, 3)) # [1, 3, 2] print(type(random.sample(l, 3))) # <class 'list'> _4, elemen tidak dipilih
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b _1
sumber.
Bobot kumulatif dapat ditentukan dalam argumen print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 4. print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 4 dalam kode contoh berikut ini setara dengan print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 9 pertama dalam kode di atas
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b _2
sumber.
Secara default, print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative _9 dan print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 4 diatur ke print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 9, dan setiap elemen dipilih dengan probabilitas yang sama
Jika panjang (jumlah elemen) print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 9 atau print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 4 berbeda dari daftar aslinya, kesalahan akan muncul
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b _3
sumber.
Selain itu, kesalahan muncul jika Anda menentukan print(random.sample(l, 1)) # [0] print(random.sample(l, 0)) # [] # print(random.sample(l, 10)) # ValueError: Sample larger than population or is negative 9 dan print(random.sample(('xxx', 'yyy', 'zzz'), 2)) # ['xxx', 'yyy'] print(random.sample('abcde', 2)) # ['a', 'e'] 4 pada saat yang sama
print(random.choice(('xxx', 'yyy', 'zzz'))) # yyy print(random.choice('abcde')) # b _4
sumber.
Dalam kode contoh sejauh ini, sebuah daftar ditentukan untuk argumen pertama, tetapi hal yang sama berlaku untuk sebuah tuple dan string