Buatlah program array multi dimensi dengan python

Buatlah program array multi dimensi dengan python


Assalamu'alaikum wr.wb.
Sebelumnya, saya telah membuat artikel yang berjudul Pembahasan dan contoh program list pada python. Yang mana artikel tersebut berisi tentang pembahasan mengenai list disertai contoh program sederhana. Kali ini saya akan membuat artikel tentang Contoh Program Dimensi List Pada Python. Pada Artikel ini, saya akan memberikan contoh program dengan list yang memiliki dimensi. Seperti yang kita ketahui bahwa list hampir sama dengan array, ada 1 dimensi, ada 2 dimensi, dan 3 dimensi. Hal itu juga akan saya berikan penjelasan beserta contoh programnya. Jika dilihat, mungkin sedikit lebih sulit daripada sebelumnya. Karena yang sebelumnya saya hanya memberikan contoh dengan list 1 Dimensi saja.

Untuk memulainya, kita perlu memahami dulu perulangan dan percabangan. Disini saya akan memberikan contoh program dengan menambah struktur kendali tersebut. Hal ini dikarenakan pada sebuah program, List atau array tidak akan lepas dari keduanya. Karena List berfungsi untuk mempersingkat program dengan bantuan perulangan dan percabangan. Tentu dengan kombinasi tersebut, logika - logika program akan semakin mudah diatasi.




Baca Juga

  • Penjelasan Array Berfungsi Sebagai Database
  • Alquran Indonesia. Membaca Alquran Bersama Murotal Di Android
  • Pengertian Dan Penjelasan Pemrograman Client Server


Cara Menginput List

Untuk cara menginput atau menambah data dari List dengan input manual, caranya dengan menginputkan variabel biasa yang kemudian dimasukkan ke list. Hal ini bertujuan agar terdapat output text seperti "Nilai : " ketika kita input. Jika kita input langsung ke ararynya, maka akan terjadi error, dikarenakan list masih kosong dan belum mempunyai index.Selain itu, kita juga menggunakan perulangan untuk memperpendek program. Berikut ini merupakan Contoh program sederhana untuk menginput List


#input list
var_data = []
for i in range (0,5):
    var_input = input("Nilai : ")
    var_data.append(var_input)

#Menampilkan list data
print(var_data)


Begitulah kira - kira contoh sederhana untuk input list. Sebenarnya untuk input list memang hanya seperti itu. Tidak ada perubahan yang signifikan.


List Multidimensional

List 2 Dimensi, List 3 Dimensi, 4 Dimensi, bahkan lebih. Ternyata disini kita bisa menggunakannya lebih mudah. Kita bisa tanpa menggunakan Nested For (for bersarang) seperti bahasa pemrograman lain. Pada bahasa pemrograman Python, kita hanya perlu menggunakan 1 perulangan saja. Dan untuk menentukan index, kita hanya perlu menentukan dengan angka. Berikut ini merupakan contoh programnya :


#input list
var_data = [[] for k in range (2)]
for i in range (0,3):
    var_satu = input("Nilai Satu : ")
    var_dua = input("Nilai Dua : ")
    var_data[0].append(var_satu)
    var_data[1].append(var_dua)

#Menampilkan list data
print(var_data)


Lihat pada var_data = [[] for k in range (2)]. Pada program tersebut terdapat angka 2 di dalam kurung (2). itu artinya kita membuat list 2 dimensi dengan 2 index. apabila ingin menambahkan dimensi, kita bisa ganti angka 2 tersebut dengan jumlah yang diinginkan.

Berikut ini merupakan outputnya :




Penutup

Sungguh sangat disayangkan di artikel ini, sangat sedikit yang bisa dibahas. Hal ini karena saat ini python cenderung mudah dipahami dan memberikan fitur yang memudahkan programmer pyhon. Pantas saja python saat ini begitu banyak diminati. Saya rasa cukup sampai disini penjelasan yang dapat saya sampaikan. Assalamu'alaikum wr.wb.




Feature yang lain dari python adalah multidimensi array. Bentuknya seperti matrix, array ini bisa kita bikin sebanyak kita suka.

  • >>> matrik=[['a','b','c'], 

              [1,2,3], 

              ['a1','b1','c1']] 

  • >>> matrik 

              [['a', 'b', 'c'], [1, 2, 3], ['a1', 'b1', 'c1']]

  • >>> 

penulisannya tidak harus seperti diatas, penulisan diatas dimaksudkan agar membacanya matrix menjadi mudah. kita bisa menulikannya dalam satu baris.


Disini kita memiliki matrix 3x3, 

Pada baris pertama kita memiliki    'a',     'b',     'c'

Pada baris kedua kita memiliki        1,      2,       3

dan pada baris ketiga                     'a1',   'b1',   'c1'


Index0120abc11232a1b1c1


Bila kita ingin memanggil string 'a1' yang berada di baris ke-1 dan kolom ke-3, kita lihat index matrik tersebut, 'a1' ada di baris index 2 dan colom index 0:

  • >>> matrik[2][0] 
  • 'a1'
  • >>> 

Untuk membuat string dari misalnya kolom 0 yang isinya ['a',1,'a1'], kita tinggal tulis:

  • >>> kolom0=[ row[0] for row in matrik ] 
  • >>> kolom0
  • ['a', 1, 'a1']
  • >>> 

apa yang terjadi diatas? kita membuat string bernama kolom0 dan diisi dengan string.matrik pada setiap baris yang pertama. dengan kata lain "berikan baris(0) untuk setiap baris pada matrik":

  • >>> matrik[0][0] 
  • 'a'
  • >>> matrik[1][0] 
  • 1
  • >>> matrik[2][0] 
  • 'a1'

Buat lagi matrik baru, isinya rr=[ [1,2,3],[4,5,6],[7,8,9] ]

di matrik ini isi nya


     1    2    3

     4    5    6

     7    8    9


Nah kita menginginkan untuk array yang baru (oo),angka pada setiap baris kolom ke-2 (indek 1) lalu ditambahkan 5.  Gambaranya seperti ini:



k1

k2

k3

b1

1

2+5

3

b2

4

5+5

6

b3

7

8+5

9

  • >>> rr=[ [1,2,3],[4,5,6],[7,8,9] ] 
  • >>> oo=[row[1]+5 for row in rr] 
  • >>> oo 
  • [7, 10, 13]
  • >>> 

pada contoh diatas masi mirip contoh sebelumnya, mengambil pada setiap baris pada kolom ke 2 (index 1) lalu ditambahkan 5.

Dan bila kita mau mengambil angka pada setiap baris, pada kolom pertama (index 0) dah bila dibagi 2 habis, tidak ada desimal.

  • >>> [row[0] for row in rr if row[0]%2==0] 
  • [4]
  • >>> 

Tanda % adalah modulus, fungsinya bila kita membagi suatu angka dengan angka lain, sisa hasil bagi merupakan modulus. contoh 3 / 2 = 1 mod 1


                        1       

                   2 |  3

                         2    -

                         1  → ini adalah modular (jadi hasilnya 1 mod 1)



Kita masih latihan array / matrik, sekarang kita akan mengambil angka-angka secara diagonal seperti 1,5,9. berarti kita memerlukan koordinat baris dan kolomnya bukan?. Koordinat yang kita perlukan adalah indek (0,0) lalu (1,1) dan (2,2) , disini ada looping (yang belum kita bahas, tapi kita tetap membahasnya hehehe... ), disini index baris dan kolomnya selalu sama bukan? ketika index baris 0 maka index kolom juga 0, dst.

  • >>> [ rr[i][i] for i in [0,1,2] ] 
  • [1, 5, 9]
  • >>> 

Ya, sepertinya anda bingung. jadi setiap baris kita mengambil array dari angka i, dan harga i adalah 0,1, dan 2. Untuk baris yang pertama, i yang digunakan adalah 0, jadi rr[0][0],

baris kedua, i yang digunakan adalah 1, jadi rr[1][1],

dan baris ketiga, i-nya adalah 2, jadi rr[2][2].

  • >>> rr[0][0] 
  • 1
  • >>> rr[1][1] 
  • 5
  • >>> rr[2][2] 
  • 9
  • >>> kk=[ r*2  for  r  in  'halo' ] 
  • >>> kk 
  • ['hh', 'aa', 'll', 'oo']
  • >>> 

pada contoh diatas string kk, terjemahannya seperti ini, " kalikan 'r' dengan 2, untuk r adalah 'halo'", sehingga setiap karakter pada 'halo' dicetak dua kali.


Bisa juga kita menbuat list yang mempunyai pola-pola tertentu tanpa repot membuatnya satu-satu seperti 0,1,2,3,4,5,6,...,100. Kita tinggal buat saja:

  • >>> list(range(101)) 
  • [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
  • >>> 

Nah untuk memulai dari angka 1 sampai 100:

  • >>> list(range(1,101)) 
  • [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
  • >>> 

diatas ( list(range(1,101)) ) angka 1 pada (1,101) merupakan awal dari list dan 101 adalah akhir dan berhenti di angka 101 (angka 101 adalah titik berhenti menghitung dan tidak dicetak).


Bila kita memerlukan suatu baris deret yang berpola seperti 2,4,6...

  • >>> list(range(2,101,2)) 
  • [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
  • >>> 

Dan untuk semua angka yang habis di bagi 2 antara 1 sampai 100:

  • >>> [ x for x in range( 1, 101) if  x % 2 == 0 ] 
  • [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
  • >>> [ [ x ] for x in range (1, 101) if x % 2 == 0 if x > 50 ]
  • [[52], [54], [56], [58], [60], [62], [64], [66], [68], [70], [72], [74], [76], [78], [80], [82], [84], [86], [88], [90], [92], [94], [96], [98], [100]]
  • >>> 

Untuk array 2 dimensinya :

  • >>> [ [ x*2 , x+2 ] for x in range ( 10 ) ] 
  • [[0, 2], [2, 3], [4, 4], [6, 5], [8, 6], [10, 7], [12, 8], [14, 9], [16, 10], [18, 11]]
  • >>>  [ [ x*2, x+2 ] for x in range( 1, 101, 2 ) if x > 50 ] 
  • [[102, 53], [106, 55], [110, 57], [114, 59], [118, 61], [122, 63], [126, 65], [130, 67], [134, 69], [138, 71], [142, 73], [146, 75], [150, 77], [154, 79], [158, 81], [162, 83], [166, 85], [170, 87], [174, 89], [178, 91], [182, 93], [186, 95], [190, 97], [194, 99], [198, 101]]
  • >>> 

Pastinya kita bertanya-tanya "koq bisa begitu ya?", ya begitulah, karena kita belum dapat semua basic dari python, sehingga kita harus menggunakan metode hacker, yang sistimatis dan "trial and error" cari pattern syntax yang benar, pastinya dari 10 kali kita coba, belum tentu ada 1 yang benar untuk saat ini. Cobalah beberapa variasi baru yang mirip-mirip dengan contoh, dan cobalah variasi yang lebih komplek dari percobaan sebelumnya. Ya kira-kira begitulah kerjaanya hecker (hecker itu bukan orang-orang yang berbuat kriminal, tapi orang-orang yang mencoba untuk mengubah sesuatu yang ada pada software atau pun hardware dimana sebuah ide bisa disusupkan kedalam ide yang lain, dan menjadi terkenal karena kriminalnya hehehe....).


Selanjutnya, kita menggunakan penjumlahan 'sum()' untuk menjumlahkan matrik rr tiap baris:

  • >>> hh=[sum(row) for row in rr] 
  • >>> hh
  • [6, 15, 24]
  • >>> 

dan satu lagi:

  • >>> hh=(sum(row) for row in rr) 
  • >>> next(hh) 
  • 6
  • >>> next(hh) 
  • 15
  • >>> next(hh) 
  • 24


Yang pake next-next an itu namanya 'map' yang bekerja oleh fungsi, hanya satu yang dikerjakan dan berdasarkan panggilan,  apa isinya hh? 

  • >>> hh 
  • <generator object <genexpr> at 0x0000000003516F30>
  • >>> 

Sepertinya hanya sebuah alamat memory. Ini dikarenakan semua angka berkerja melalui fungsi. Jadi hh sekarang adalah bagian dari fungsi yang beralamat di 0x0000000003516F30 di memory. Apa ini penting? tidak penting, tidak masalah alamatnya dimana yang penting bisa jalan programnya.