Pengenalan python

Pada artikel ini, kita akan membahas dasar-dasar Python. Kami semakin dekat dan dekat dengan tujuan, secara umum, kami akan segera mulai bekerja dengan perpustakaan utama untuk Ilmu Data dan akan menggunakan TensorFlow (untuk menulis dan menggunakan jaringan saraf, Anda akan memahami Deep Learning).

Instalasi


Python dapat diunduh dari python.org. Namun, jika belum diinstal, maka sebagai gantinya
Saya merekomendasikan paket distribusi Anaconda, yang sudah mencakup sebagian besar perpustakaan yang diperlukan untuk bekerja di bidang ilmu data.

Jika Anda tidak menggunakan distribusi Anaconda, maka pastikan untuk menginstal manajer paket pip, yang membuatnya mudah untuk menginstal paket pihak ketiga, karena kami akan memerlukan beberapa di antaranya. Anda juga perlu menginstal shell IPython interaktif yang lebih ramah pengguna. Perlu diingat bahwa distribusi Anaconda dilengkapi dengan pip dan IPython.

Ruang putih


Banyak bahasa pemrograman menggunakan blok kode yang membedakan.
kawat gigi. Indentasi digunakan dalam Python:

#      for for i in [ 1, 2, 3, 4, 5] : print (i) #     for i for j in (1, 2, , 4, 5 ] : print ( j ) #     for j print (i + j) #     for j print (i) #     for i print ( "  ") 

Ini membuat kode mudah dibaca, tetapi pada saat yang sama membuatnya mengikuti pemformatan. Ruang di dalam tanda kurung dan tanda kurung diabaikan, yang membuatnya lebih mudah untuk menulis ekspresi verbose:

 #    long_winded_computation = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20) 

dan mudah dibaca kode:
 #   list_of_lists = [ [ 1 , 2, 3 ) , [4, 5, 6 ] , [ 7 , 8, 9 ] ] #      easy_to_read_list_of_lists = [1, 2, 3 ) , [4, 5, 6 ) , [7, 8, 9 ) ] 

Untuk melanjutkan pernyataan, garis miring terbalik digunakan pada baris berikutnya, namun, catatan seperti itu jarang digunakan:

 two_plus_three = 2 + \ 3 

Memformat kode dengan spasi membuat sulit untuk menyalin dan menempelkan kode ke shell Python. Misalnya, mencoba menyalin kode berikut:

 for i in [ 1, 2, 3, 4, 5] : #      print (1) 

ke dalam shell Python standar akan melempar kesalahan:

 #    :     IndentationError : expected an indented blk 

karena untuk juru bahasa, string kosong menunjukkan akhir dari blok kode dengan for for.

IPython memiliki fungsi sulap "% paste" yang menempel dengan benar segala sesuatu di clipboard, termasuk spasi.

Modul (Mengimpor Perpustakaan)


Beberapa pustaka lingkungan pemrograman berbasis Python tidak dimuat secara default. Agar alat ini dapat digunakan, Anda harus mengimpor modul yang mengandungnya.

Salah satu pendekatan adalah dengan mengimpor modul itu sendiri:

 import re my_regex = re.compile ("[0-9]+",re.I) 

Berikut adalah nama modul yang berisi fungsi dan konstanta untuk bekerja dengan ekspresi reguler. Dengan mengimpor seluruh modul dengan cara ini, Anda dapat mengakses fungsi dengan awalan dengan ulang.

Jika sudah ada variabel dengan nama re dalam kode, maka Anda dapat menggunakan modul alias:

 import re as regex my_regex = regex.compile("[0-9)+",regex.I) 

Alias ​​juga digunakan dalam kasus-kasus di mana modul yang diimpor memiliki nama yang rumit atau ketika modul sering mengakses modul.

Misalnya, ketika memvisualisasikan data berdasarkan modul matplotlib , biasanya itu
gunakan alias standar berikut:

 import matplotlib.pyplot as plt 

Jika Anda perlu mendapatkan beberapa nilai spesifik dari modul, Anda dapat mengimpornya secara eksplisit dan menggunakannya tanpa batasan:

 from collections import defaultdict , Counter lookup = defaultdict(int) my_counter = Counter() 

Fungsi


Fungsi adalah aturan yang mengambil nol atau lebih input argumen dan mengembalikan hasil yang sesuai. Dalam Python, fungsi biasanya didefinisikan menggunakan pernyataan def:

 def double() : """,  ,     docstring,  ,    . ,       2""" return  * 2 

Fungsi dalam Python diperlakukan sebagai objek kelas satu. Ini berarti bahwa mereka dapat ditugaskan ke variabel dan diteruskan ke fungsi lain dengan cara yang sama seperti argumen lain:

 #   f   def apply_to_one(f): '""'  f      """ return f(1) my _ double = double #       = apply_to_one(my_double) # = 2 

Selain itu, Anda dapat dengan mudah membuat fungsi anonim pendek atau ekspresi lambda:

  = apply_to_one(lambda :  + 4) # = 5 

Ekspresi Lambda dapat ditugaskan ke variabel. Namun, disarankan untuk menggunakan operator def:

 another double = lmbd : 2 *  #    def another_double (x) : return 2 *  #   

Selain itu, Anda bisa meneruskan argumen default ke parameter fungsi, yang harus ditentukan hanya ketika nilai selain dari standar diharapkan:

 def my_print (message="oe   " ): print (message ) my_print ( "pe") #  '' my_print () #  '   ' 

Terkadang disarankan untuk menentukan argumen dengan nama:

 #   def subtract ( a=0, =0 ) : return  - b subtract (10, 5)#  5 subtract (0, 5)#  -5 subtract (b=5 )#  ,      

Di masa depan, fungsi akan sangat sering digunakan.

Garis


String karakter (atau urutan karakter) di kedua sisi terbatas pada tanda kutip tunggal atau ganda (harus cocok):

 single_quoted_string = '    ' #  double_quoted_string = "  " #  

Garis miring terbalik digunakan untuk menyandikan karakter khusus. Sebagai contoh:

 tab_string = "\t" #    len (tab_string)# = 1 

Jika Anda memerlukan backslash itu sendiri, yang terjadi secara langsung
di nama direktori di sistem operasi Windows, lalu menggunakan r '"' Anda dapat membuat string yang tidak diformat :

 not_tab_string = r"\t" #   ' \ '  ' t ' len (not_tab_string) # = 2 

Blok teks multi-baris dibuat menggunakan triple single (atau
dua kali lipat) kutipan:

 multi_line_string = """   .        """ 

Pengecualian


Ketika terjadi kesalahan, Python melempar pengecualian. Pengecualian yang tidak ditangani menyebabkan program berhenti secara tak terduga. Pengecualian ditangani menggunakan pernyataan coba dan kecuali :

 try: print (0 / 0) except ZeroDivisionError : rint ( "    ") 

Meskipun dalam banyak bahasa pemrograman penggunaan pengecualian dianggap sebagai gaya pemrograman yang buruk, dalam Python tidak ada yang perlu dikhawatirkan jika digunakan untuk membuat kode lebih bersih, dan kadang-kadang kita akan melakukan hal itu.

Daftar


Mungkin struktur data paling penting dalam Python adalah daftar. Ini hanya koleksi yang dipesan (atau koleksi), mirip dengan array dalam bahasa pemrograman lain, tetapi dengan fungsionalitas tambahan.

 integer_list = [1, 2, ] #    heterogeneous_list = ["", 0.1 , True] #   list_of_lists = [integer_list, heterogeneous_list, [] ] #   list_length = len(integer_list) #  = 3 list_sum = sum(integer_list)#    = 6 

Anda dapat mengatur nilai dan mengakses elemen ke-n dari daftar menggunakan tanda kurung:

  = list(range (10)) #   {0, 1 , . . . , 9] zero =  [0] # = 0 ,  -, .  .  1-  = 0 one = x [1] # = 1 nine =  [-1] # = 9, -    eight =  [-2] # = 8, -     [0] = -1 #   = { - 1 , 1 , 2, 3, . . . , 9] 

Selain itu, tanda kurung siku digunakan untuk "memotong" daftar:

 first_three = [:] #   = [-1 , 1, 2] three_to_end = [3:] #    = {3, 4, ... , 9] one_to_four = [1:5] #     = {1 , 2, 3, 4] last_three = [-3:] #   = { 7, 8, 9] without_first_and_last = x[1:-1] #     = {1 , 2, ... , 8] _ of _ = [:] #   = [ -1, 1, 2, ... , 91 

Python memiliki pernyataan ln yang memeriksa apakah suatu elemen termasuk dalam daftar:

 1 ln [1, 2, 3] #True 0 ln [1, 2, 3] #False 

Cek terdiri dari melihat semua elemen satu per satu, oleh karena itu layak digunakan hanya ketika diketahui pasti bahwa daftar kecil atau tidak peduli berapa lama waktu yang dibutuhkan untuk memeriksa.

Daftar mudah disatukan:

  = [1, 2, 3] . extend ( [ 4, 5, 6] ) #   = {1, 2, 3, 4, 5, 6} 

Jika Anda ingin membiarkan daftar x tidak berubah, maka Anda dapat menggunakan tambahan daftar:

  = [1, 2, 3]  =  + [4, 5, 6] #= (1, 2, 3, 4, 5, 6] ;    

Biasanya, satu elemen ditambahkan ke daftar dalam satu operasi:

  = [1, 2, 3] x.append (0)#   = [1,2,3,0] =  [-1] # = 0 z = len (x)# = 4 

Sering kali nyaman untuk unzip daftar jika Anda tahu berapa banyak elemen di dalamnya:

 ,  = [1, 2] #   = 1,  = 2 

Jika jumlah elemen tidak sama di kedua sisi ekspresi, pesan kesalahan ValueError akan ditampilkan.

Untuk nilai yang dibuang, garis bawah biasanya digunakan:

 _,  = [1, 2] #   == 2,     

Tuples


Tuples adalah sepupu daftar yang tidak berubah (atau tidak berubah).

Hampir semua yang dapat dilakukan dengan daftar tanpa membuat perubahan dapat dilakukan dengan tuple. Alih-alih kurung kotak, tupel dibuat dengan kurung bundar, atau mereka bisa melakukannya tanpa mereka sama sekali:

 my_list = [1, 2] #   my_tuple = (1, 2) #   other_tuple = 3, 4 #    my_list [1] = 3 #  my_list = [1 , 3] try: my_tuple [1] = 3 except ypeError : print ( "   " ) 

Tuples menyediakan cara mudah untuk mengembalikan beberapa nilai dari fungsi:

 #        def sum_and_product (x,  ) : return ( + ) , ( * ) sp = sum_and_product (2, 3) # = (5, 6) s,  = sum_and_product (S, 10) # s = 15,  = 50 

Tuples (dan daftar) juga digunakan dalam banyak penugasan:

 ,  = 1, 2 #   = 1,  = 2 ,  = ,  #   -;   = 2,  = 1 

Kamus


Kamus atau daftar asosiatif adalah struktur data dasar lainnya.

Di dalamnya, nilai dikaitkan dengan kunci, yang memungkinkan Anda untuk dengan cepat mengambil nilai yang terkait dengan kunci tertentu:

 empty_dict = {} #   - empty_dict2 = dict () #   - grades = { "Grigoriy" : 80, "Tim" : 95 } #   (  ) 

Nilai kunci dapat diakses menggunakan tanda kurung:

 rigory_aleksee = grades[ "Grigoriy"] # = 80 

Jika Anda mencoba meminta nilai yang tidak ada dalam kamus, Anda akan menerima pesan kesalahan KeyError:

 try: kates_grade = grades [ "Kate "] except eyError: rint ( "    ! " ) 

Anda dapat memeriksa kunci menggunakan operator di:

 grigoriy_has_grade = "Grigoriy" in grades #true kate_has_grade = "Kate" in grades #false 

Kamus memiliki metode get () yang, ketika mencari kunci yang hilang, alih-alih melempar pengecualian, mengembalikan nilai default:

 grigoriy_grade = grades. get ( "Grigoriy ", 0) # =80 kates_grade = grades.get ("Kate" , 0) # = 0 no_ones_grade = grades.get ( "No One" ) #    = None 

Penetapan nilai kunci dilakukan menggunakan kurung sama:

 grades [ "Tim" ] = 99 #    grades [ "Kate"] = 100 #    num_students = len(grades) # = 3 

Kamus sering digunakan sebagai cara mudah untuk merepresentasikan struktur
data:

 tweet = { "user" : " grinaleks", "text" : "   -  ", " retweet_count" : 100, "hashtags " : [ "# data", " #science", " #datascience " , " #awesome", "#yolo" ] } 

Selain mencari kunci individual, Anda dapat menghubungi semua orang sekaligus:

 tweet_keys = tweet.keys() #   tweet_values = tweet.values() #   tweet_items = tweet.items() #   (, ) "user" in tweet_keys # True,    in  "user" in tweet # -,   in  "grinaleks" in tweet_values # True 

Kunci harus tidak berubah; khususnya, daftar tidak dapat digunakan sebagai kunci. Jika Anda memerlukan kunci komposit, maka lebih baik menggunakan tuple atau mencari cara untuk mengubah kunci menjadi string.

Kamus defaultdict


Biarkan dokumen perlu menghitung kata-kata. Solusi yang jelas untuk masalah ini adalah membuat kamus di mana kuncinya adalah kata-kata, dan nilainya adalah frekuensi kata (atau jumlah kemunculan kata dalam teks). Selama pemeriksaan kata, jika kata saat ini sudah ada di kamus, maka frekuensinya meningkat, dan jika tidak ada, ditambahkan ke kamus:

 #   word_ counts = { } document = { } #  ;    for word in document : if word in word counts: word_counts [word] += 1 else : word_counts [word] = 1 

Selain itu, Anda dapat memanfaatkan metode yang disebut "lebih baik meminta maaf daripada izin" dan menangkap kesalahan ketika mencoba mengakses kunci yang hilang:

 word_ counts = { } for word in document : try: word_counts [word] += 1 except eyError : word_counts [word] = 1 

Trik ketiga adalah menggunakan metode get (), yang dengan anggun mengatasi situasi dengan kunci yang hilang:

 word_counts = { } for word in document : previous_count = word_counts.get (word, 0) word_counts [word] = previous_count + 1 

Semua teknik ini agak rumit, dan untuk alasan ini disarankan untuk menggunakan kamus defaultdict (yang juga disebut kamus dengan: nilai default). Itu terlihat seperti kamus biasa, kecuali satu fitur - ketika mencoba mengakses kunci yang tidak ada di dalamnya, pertama-tama menambahkan nilai untuk itu menggunakan fungsi tanpa argumen, yang disediakan ketika itu dibuat. Untuk menggunakan kamus default, Anda harus mengimpornya dari modul koleksi:

 from collections import defaultdict word_counts = defaultdict(int) # int ()  0 for word in document : word_counts[word] += 1 

Selain itu, penggunaan kamus default adalah penggunaan praktis ketika bekerja dengan daftar, kamus, dan bahkan dengan fungsi yang ditentukan pengguna:

 dd_list = defaultdict (list)# list ()    dd_list [2].append (l) #  dd_list  (2: {1] } dd_dict = defaultdict (dict ) # dict ()    dict dd_dict ["Grigoriy"] [ "City" ] = "Seattle" # { "Grigoriy" : { "City" : Seattle"} dd_pair = defaultdict (lambda: [0,0] ) dd_pair [2][1] = 1 #  dd_pair  (2 : {0,1] } 

Fitur-fitur ini akan diperlukan ketika kamus digunakan untuk "koleksi"
hasil untuk kunci tertentu dan bila perlu untuk menghindari duplikat
memeriksa keberadaan kunci dalam kamus.

Kamus Penghitung


Subkelas kamus counter mengubah urutan nilai menjadi objek seperti defaultdict (int), di mana kunci dipetakan ke frekuensi atau, lebih tepatnya, kunci ditampilkan (peta) dalam frekuensi.

Ini terutama akan digunakan saat membuat histogram:

 from collections import Counter  = Counter([0,1,2,0]) #    = { 0 : 2, 1 : 1, 2 : 1 } 

Fungsionalitasnya membuatnya cukup mudah untuk memecahkan masalah penghitungan frekuensi kata:

 #      word_counts = Counter (document) 

Kamus penghitung memiliki metode most_common (), yang sering berguna:

 #  10       () for word, count in word_counts.most_common(10) : print (word, count ) 

Banyak


Struktur data set atau set adalah kumpulan elemen yang tidak berurutan tanpa pengulangan:

 s = set ()#    s.add (1) #  s = { 1 } s.add (2) #  s = { 1, 2 } s.add (2) # s    = { 1, 2 }  = len (s) # = 2  = 2 in s # = True z = 3 in s # = False 

Banyak yang akan digunakan karena dua alasan. Pertama, operasi dalam set sangat cepat. Jika Anda perlu memeriksa set elemen besar untuk memiliki urutan tertentu, maka struktur data set lebih cocok untuk ini daripada daftar:

 #  - stopwords_list = [ "a", "an" , "at "] + hundreds_of_other_words + [ "yet ", " you"] " zip" in stopwords_list # False,     #  - stopwords_set = set(stopwords_list) " zip" in stopwords_set #    

Alasan kedua adalah untuk mendapatkan elemen unik dalam kumpulan data:

 item_list = [1, 2, 3, 1, 2, 3] #  num_items = len( item_list) #  = 6 item_set = set(item_list) #   (1, 2, 3} num_distinct_items = len(item_set) #   = 3 distinct_item_list = list(item_set) #    = [1,2,3] 

Banyak yang akan digunakan jauh lebih jarang daripada kamus dan daftar.

Struktur kontrol


Seperti dalam kebanyakan bahasa pemrograman lain, tindakan dapat dilakukan dengan syarat menggunakan pernyataan if:

 if 1 > 2: message " 1    2 . . . " elif 1 > 3: message "elif  'else if '" else: message = "      ,  else " 

Selain itu, Anda dapat menggunakan operator single-line triple if-then-else, yang terkadang akan digunakan nanti:

 parity = "" if  % 2 ===  else " " 

Python memiliki lingkaran whlle:

  = 0 while  < 10: print (x, " 10")  += 1 

Namun, for loop akan lebih sering digunakan dengan operator in:

 for  in range (lO) : print (x, " 10" ) 51 

Jika Anda memerlukan logika kontrol loop yang lebih kompleks, Anda dapat menggunakan operator

 continue  break: for  1n range (10) : 1f  == 3: continue #      if  == 5: break print (x) #    

Hasilnya, 0, 1, 2 dan 4 akan dicetak.

Sejati


Variabel Boolean dalam Python bekerja dengan cara yang sama seperti pada kebanyakan bahasa pemrograman lainnya, dengan hanya satu pengecualian - mereka dikapitalisasi:

 one_is_less_than_two = 1 < 2 #True true_equals_false = True == False #False 

Untuk menunjukkan nilai tidak ada, objek Tidak ada khusus digunakan, yang sesuai dengan null dalam bahasa lain:

  = None print (x == None )#  True,    - print (  is None ) #  True - 

Python dapat menggunakan nilai apa pun di mana tipe boolean Boolean diharapkan. Semua elemen berikut memiliki nilai Boolean dari False:

  • Salah .
  • Tidak ada
  • set () (set):
  • [] (daftar kosong);
  • {} (kamus kosong);

Hampir semuanya dianggap benar. Ini membuatnya mudah digunakan jika pernyataan memeriksa daftar kosong. baris kosong, kamus kosong, dll. Kadang-kadang, bagaimanapun, ini menyebabkan kesalahan yang sulit dikenali, jika Anda tidak memperhitungkan hal-hal berikut:

 s = some_function_that_returns_a_string () #    if s: first_char = s [0] #     else: first char = "" 

Inilah cara yang lebih mudah untuk melakukan hal yang sama:

 first_char = s and s [0] 
karena operator logis dan mengembalikan nilai kedua, jika yang pertama benar, dan nilai pertama, jika itu salah. Demikian pula, jika x dalam ekspresi berikut adalah angka, atau mungkin tidak ada, maka hasilnya entah bagaimana akan menjadi angka:

 safe  =  or 0 #   

Fungsi semua bawaan Python mengambil daftar dan mengembalikan True hanya ketika setiap item daftar benar, dan fungsi bawaan apa pun mengembalikan true ketika setidaknya satu elemen benar:

 all ( [True, 1, { 3 }]) # True all ( [True, 1, {}] ) # False, {} =  any ( [ True, 1, {}]) # True, True =  all ( [] ) # True,      any ( [ ] ) # False,      

Source: https://habr.com/ru/post/id450474/


All Articles