Lotere, undian berhadiah, dan permainan kartu. Apa kesamaan dari ketiga game ini? . Apakah langkah itu? . Dalam berbagai kasus pemrograman, Anda akan diminta untuk mengocok sekumpulan item tertentu
Ada kebutuhan untuk mengocok satu set item yang diberikan. Pada artikel ini, kita akan belajar cara mengocok daftar dengan python. Dan Ya, Anda bisa melakukannya dengan dan tanpa menggunakan perintah shuffle
Apa itu daftar di python?
Daftar di python adalah struktur data yang menyediakan akses berurutan ke kumpulan item. Terlalu banyak jargon teknis?
Daftar tersebut akan menjadi urutan item yang perlu Anda beli dan Anda dapat menggunakan daftar tersebut untuk melihat item apa yang akan dibeli kapan saja. Demikian pula, di python, Anda dapat membuat daftar yang memungkinkan Anda menyimpan banyak item dengan satu nama dan kemudian menggunakan nama itu untuk mengakses semua item
Ada dua metode yang dapat digunakan untuk mendeklarasikan daftar dengan python, metode pertama adalah dengan mengapit semua item yang ingin kita masukkan ke dalam daftar di dalam tanda kurung siku [ ]
Metode lainnya adalah menggunakan fungsi list() untuk membuat daftar. Anda bisa meneruskan semua item yang ingin Anda sertakan dalam daftar di dalam fungsi list() dan itu akan mengembalikan daftar dengan semua item
Anda juga dapat membuat daftar kosong yang dapat Anda tambahkan elemennya nanti dalam kode Anda. Untuk melakukannya, Anda dapat menggunakan kurung siku kosong atau fungsi list() tanpa argumen. Lihat kode di bawah ini untuk memahami ini lebih lanjut
#Creating a list using square braces lis1 = [15,12,48,19,63] #Creating a list using list function lis2 = list((24,18,19,47)) #Creating an empty list emptylis1 = [] emptylis2 = list() print("List1: ",lis1,"\n","List2: ",lis2,"\n","EmptyLists: ",emptylis1,emptylis2)
Keluaran
List1: [15, 12, 48, 19, 63] List2: [24, 18, 19, 47] EmptyLists: [] [] _
Pelajari lebih lanjut tentang daftar python di sini
Bagaimana cara mengocok daftar dengan Python?
Ada 03 metode untuk mengocok daftar dengan python, Algoritma Fisher-Yates Shuffle, metode pengacakan, dan metode pengambilan sampel. Mari kita bahas semuanya secara rinci
01) Algoritma Fisher-Yates
Algoritma Fisher-Yates menyediakan teknik untuk mengocok item dalam daftar dengan menukar tempat item dengan item lain dari indeks acak dalam daftar. Indeks adalah angka di dalam memori yang dapat digunakan untuk mengakses elemen dalam daftar. Jika kita memiliki daftar,
Lis1 = [25,28,21,20]
maka proses untuk mengakses nomor katakanlah 28 akan menjadi Lis[1], di mana 1 adalah indeks dari 28. Indeks dimulai dari 0 dari item pertama dalam daftar dan berurutan ke item terakhir dalam daftar. Algoritma Fisher-Yates menggunakan indeks untuk mengocok item daftar
Algoritme menelusuri daftar secara terbalik, mulai dari indeks terakhir, dan menggunakan metode dalam python, yang disebut randint(). Metode randint() menghasilkan nilai bilangan bulat acak antara titik awal dan titik berhenti yang kami sediakan
Dalam Algoritma Fisher-Yates, titik awal adalah 0 dan titik akhir adalah panjang daftar dikurangi 1 untuk metode randint(). Algoritma Fisher-Yates menyebabkan indeks asli dari daftar hilang, jadi kita tidak dapat kembali dari mengacak daftar ke daftar asli
Implementasi kode python untuk ini ditunjukkan di bawah ini
import random lis1 = [15,12,48,19,63] print("The original list is: ",lis1) for i in range(len(lis1)-1,0,-1): j = random.randint(0,i+1) #selecting a random item's index lis1[i],lis1[j] = lis1[j],lis1[i] #swapping the two items print("The shuffled list is: ",lis1)
Keluaran
The original list is: [15, 12, 48, 19, 63] The shuffled list is: [15, 19, 12, 63, 48]
02) Metode Acak
Alih-alih menerapkan algoritme dengan mengkodekan algoritme secara manual, Anda juga dapat mengocok daftar dengan python menggunakan pustaka bawaannya. Pustaka adalah kumpulan modul atau fungsi yang telah ditentukan sebelumnya yang dapat Anda panggil dan gunakan secara langsung dalam kode Anda tanpa mengkhawatirkan penerapannya
Untuk mengocok daftar, kita bisa menggunakan pustaka acak dan metode shuffle() yang tersedia di dalamnya. Metode shuffle mengambil daftar yang ingin kita acak sebagai argumen dan kemudian mengocoknya pada tempatnya
Ini berarti bahwa metode pengacakan tidak mengembalikan apa pun tetapi membuat perubahan pada daftar asli itu sendiri. Daftar aslinya hilang ketika kita menggunakan metode shuffle
Kode python untuk metode shuffle diberikan di bawah ini;
import random lis1 = [15,12,48,19,63] print("The original list is: ",lis1) random.shuffle(lis1) #shuffle method print("The shuffled list is: ",lis1)_
Keluaran
The original list is: [15, 12, 48, 19, 63] The shuffled list is: [19, 48, 12, 63, 15]
03) Metode Sampel
Dalam situasi tertentu, kami mungkin perlu menjaga agar daftar asli tetap utuh tanpa mengganggu itemnya. Tapi kita juga perlu mengocok daftar item. Dalam situasi ini, kita dapat menggunakan metode sample() yang tersedia di pustaka acak python
Metode pengambilan sampel tidak mengganggu daftar asli dan mengembalikan daftar acak dari semua item dalam daftar. Dalam metode ini, kami tidak kehilangan daftar asli dan pada saat yang sama juga mendapatkan daftar acak yang kami butuhkan
Implementasi kode untuk ini disediakan di bawah ini
import random lis1 = [15,12,48,19,63] print("The original list is: ",lis1) lis2 = random.sample(lis1,len(lis1)) print("The original list after shuffling: ",lis1) print("The shuffled list is: ",lis2)_
Keluaran
The original list is: [15, 12, 48, 19, 63] The original list after shuffling: [15, 12, 48, 19, 63] The shuffled list is: [48, 63, 12, 15, 19]
Takeaway
Daftar di python adalah salah satu struktur data dasar yang ada dan sekarang Anda tahu bagaimana 3 cara berbeda untuk mengocok daftar di python dengan kode. Anda juga dapat mengocok daftar tanpa menggunakan perintah shuffle
Algoritma Fisher-Yates menukar dua item secara acak, metode shuffle() dan metode sample(). Dua metode pertama menyebabkan daftar asli hilang sedangkan metode ketiga mempertahankan urutan asli daftar