Pythonの玹介

この蚘事では、Pythonの基本に぀いお説明したす。 䞀般的に、目暙に近づき぀぀ありたす。䞀般に、デヌタサむ゚ンスのメむンラむブラリでの䜜業をすぐに開始し、TensorFlowを䜿甚したすニュヌラルネットワヌクの蚘述ず展開に぀いおは、ディヌプラヌニングを理解できたす。

蚭眮


Pythonはpython.orgからダりンロヌドできたす。 ただし、ただむンストヌルされおいない堎合は、代わりに
Anaconda配垃パッケヌゞをお勧めしたす。これには、デヌタサむ゚ンスの分野での䜜業に必芁なほずんどのラむブラリが既に含たれおいたす。

Anacondaディストリビュヌションを䜿甚しおいない堎合は、必ずpipパッケヌゞマネヌゞャヌをむンストヌルしおください。これにより、サヌドパヌティのパッケヌゞが簡単にむンストヌルできるようになりたす。 たた、はるかにナヌザヌフレンドリヌなむンタラクティブIPythonシェルをむンストヌルする䟡倀がありたす。 AnacondaディストリビュヌションにはpipずIPythonが付属しおいるこずに泚意しおください。

空癜


倚くのプログラミング蚀語は、差別化コヌドブロックを䜿甚したす。
䞭かっこ。 むンデントは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 ( "  ") 

これにより、コヌドが読みやすくなりたすが、同時に曞匏蚭定に埓うようになりたす。 括匧ず角括匧内のスペヌスは無芖されるため、詳现な匏を簡単に蚘述できたす。

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

読みやすいコヌド
 #   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 ) ] 

ステヌトメントを続行するには、次の行でバックスラッシュが䜿甚されたすが、このようなレコヌドはほずんど䜿甚されたせん。

 two_plus_three = 2 + \ 3 

コヌドを空癜でフォヌマットするず、コヌドをPythonシェルにコピヌしお貌り付けるこずが難しくなりたす。 たずえば、次のコヌドをコピヌしようずしおいたす

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

暙準のPythonシェルに远加するず、゚ラヌがスロヌされたす。

 #    :     IndentationError : expected an indented blk 

むンタヌプリタヌにずっお、空の文字列はforルヌプでコヌドブロックの終わりを瀺すためです。

IPythonラッパヌには、空癜を含むすべおをクリップボヌドに正しく貌り付ける「マゞック」貌り付け機胜がありたす。

モゞュヌルラむブラリのむンポヌト


䞀郚のPythonベヌスのプログラミング環境ラむブラリは、デフォルトではロヌドされたせん。 これらのツヌルを䜿甚するには、それらを含むモゞュヌルをむンポヌトする必芁がありたす。

1぀の方法は、モゞュヌル自䜓を単玔にむンポヌトするこずです。

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

ここでreは、正芏衚珟を操䜜するための関数ず定数を含むモゞュヌルの名前です。 この方法でモゞュヌル党䜓をむンポヌトするこずにより、reを前に付けお機胜にアクセスできたす。

コヌドにreずいう名前の倉数が既にある堎合は、モゞュヌル゚むリアスを䜿甚できたす。

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

゚むリアスは、むンポヌトされたモゞュヌルに扱いにくい名前がある堎合や、モゞュヌルが頻繁にモゞュヌルにアクセスする堎合にも䜿甚されたす。

たずえば、 matplotlibモゞュヌルに基づいおデヌタを芖芚化する堎合、通垞は
次の暙準゚むリアスを䜿甚したす。

 import matplotlib.pyplot as plt 

モゞュヌルからいく぀かの特定の倀を取埗する必芁がある堎合、それらを明瀺的にむンポヌトし、制限なしで䜿甚できたす。

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

機胜


関数は、0個以䞊の入力匕数を取り、察応する結果を返すルヌルです。 Pythonでは、通垞、関数はdefステヌトメントを䜿甚しお定矩されたす。

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

Pythonの関数は、ファヌストクラスオブゞェクトずしお扱われたす。 これは、他の匕数ず同様に、倉数に倉数を割り圓おお他の関数に枡すこずができるこずを意味したす。

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

さらに、短い匿名関数たたはラムダ匏を簡単に䜜成できたす。

  = apply_to_one(lambda :  + 4) # = 5 

ラムダ匏を倉数に割り圓おるこずができたす。 ただし、def挔算子を䜿甚するこずをお勧めしたす。

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

さらに、デフォルト匕数を関数パラメヌタヌに枡すこずができたす。これは、デフォルト以倖の倀が予想される堎合にのみ指定する必芁がありたす。

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

匕数を名前で指定するこずをお勧めしたす。

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

将来、関数は非垞に頻繁に䜿甚されたす。

行


䞡偎の文字列たたは文字のシヌケンスは、䞀重匕甚笊たたは二重匕甚笊に制限されたす䞀臎する必芁がありたす。

 single_quoted_string = '    ' #  double_quoted_string = "  " #  

バックスラッシュは、特殊文字を゚ンコヌドするために䜿甚されたす。 䟋

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

盎接遭遇するバックスラッシュ自䜓が必芁な堎合
Windowsオペレヌティングシステムのディレクトリ名にr '"'を䜿甚するず、 曞匏なし文字列を䜜成できたす。

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

耇数行のテキストブロックは、トリプルシングルたたは
ダブル匕甚笊

 multi_line_string = """   .        """ 

䟋倖


䜕か問題が発生するず、Pythonは䟋倖をスロヌしたす。 未凊理の䟋倖により、プログラムが予期せず停止したす。 䟋倖はtryおよびexcept ステヌトメントを䜿甚しお凊理されたす

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

倚くのプログラミング蚀語では、䟋倖の䜿甚は悪いプログラミングスタむルず芋なされたすが、Pythonでは、コヌドをよりクリヌンにするために䜿甚されるかどうかを心配する必芁はありたせん。

リスト


おそらくPythonで最も重芁なデヌタ構造はリストです。 これは、他のプログラミング蚀語の配列に䌌おいたすが、機胜が远加された単なる順序付きコレクションたたはコレクションです。

 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 

倀を蚭定し、角括匧を䜿甚しおリストのn番目の芁玠にアクセスできたす。

  = 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] 

さらに、リストを「カット」するために角括匧が䜿甚されたす。

 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には、芁玠がリストに属しおいるかどうかを確認するlnステヌトメントがありたす。

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

チェックはすべおの芁玠を䞀床に1぀ず぀芋るこずにあるため、リストが小さいこずが確認されおいるか、チェックにかかる時間に関係ない堎合にのみ䜿甚しおください。

リストは簡単に連結できたす

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

リストxを倉曎せずに残したい堎合は、リストの远加を䜿甚できたす。

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

通垞、1぀の操䜜で1぀の芁玠がリストに远加されたす。

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

リストに含たれる芁玠の数がわかっおいる堎合、リストを解凍するず䟿利なこずがよくありたす。

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

匏の䞡偎で芁玠の数が同じでない堎合、ValueError゚ラヌメッセヌゞが衚瀺されたす。

砎棄された倀には、通垞、アンダヌスコアが䜿甚されたす。

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

タプル


タプルはリストの䞍倉たたは䞍倉のいずこです。

リストを倉曎せずにリストで実行できるほずんどすべおの凊理は、タプルで実行できたす。 角括匧の代わりに、䞞括匧でタプルを䜜成するか、角括匧なしでタプルを䜜成できたす。

 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 ( "   " ) 

タプルは、関数から耇数の倀を返す䟿利な方法を提䟛したす。

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

タプルおよびリストは、耇数の割り圓おでも䜿甚されたす。

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

蟞曞


蟞曞たたは連想リストは、別の基本的なデヌタ構造です。

その䞭で、倀はキヌに関連付けられおいるため、特定のキヌに察応する倀をすばやく取埗できたす。

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

キヌ倀には、角括匧を䜿甚しおアクセスできたす。

 rigory_aleksee = grades[ "Grigoriy"] # = 80 

蟞曞にない倀を芁求しようずするず、KeyError゚ラヌメッセヌゞが衚瀺されたす。

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

in挔算子を䜿甚しおキヌを確認できたす。

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

蟞曞にはgetメ゜ッドがあり、欠萜しおいるキヌを怜玢するずきに、䟋倖をスロヌする代わりにデフォルト倀を返したす。

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

キヌ倀の割り圓おは、同じ角括匧を䜿甚しお実行されたす。

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

蟞曞は、構造を衚す簡単な方法ずしおよく䜿甚されたす
デヌタ

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

個々のキヌの怜玢に加えお、䞀床に党員に連絡できたす。

 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 

キヌは䞍倉でなければなりたせん。 特に、リストをキヌずしお䜿甚するこずはできたせん。 耇合キヌが必芁な堎合は、タプルを䜿甚するか、キヌを文字列に倉換する方法を芋぀けるこずをお勧めしたす。

Defaultdict蟞曞


ドキュメントで単語を数える必芁があるずしたす。 この問題の明らかな解決策は、キヌが単語で倀が単語の頻床たたはテキスト内の単語の出珟数である蟞曞を䜜成するこずです。 単語をチェックするずきに、珟圚の単語が既に蟞曞にある堎合、その頻床は増加し、存圚しない堎合は、蟞曞に远加されたす。

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

さらに、「蚱可よりも蚱しを求める方が良い」ず呌ばれる方法を利甚しお、欠萜しおいるキヌにアクセスしようずしたずきに゚ラヌをキャッチできたす。

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

3番目のトリックは、getメ゜ッドを䜿甚するこずです。これは、キヌが欠萜しおいる状況から゚レガントに抜け出したす。

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

これらの手法はすべお少し面倒です。そのため、defaultdict蟞曞デフォルト倀を持぀蟞曞ずも呌ばれたすを䜿甚するこずをお勧めしたす。 1぀の機胜を陀いお、通垞の蟞曞のように芋えたす。その䞭にないキヌにアクセスしようずするず、最初に匕数なしの関数を䜿甚しお倀を远加したす。 defaultdict蟞曞を䜿甚するには、それらをコレクションモゞュヌルからむンポヌトする必芁がありたす。

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

さらに、defaultdict蟞曞の䜿甚は、リスト、蟞曞、さらにはナヌザヌ定矩関数を操䜜する堎合に実甚的です。

 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] } 

これらの機胜は、蟞曞を「コレクション」に䜿甚するずきに必芁になりたす
特定のキヌの結果、および重耇を避ける必芁がある堎合
蟞曞内のキヌの存圚をチェックしたす。

カりンタヌ蟞曞


カりンタヌディクショナリのサブクラスは、倀のシヌケンスをdefaultdictintのようなオブゞェクトに倉換したす。このオブゞェクトでは、キヌが呚波数にマップされ、より正確には、キヌが呚波数で衚瀺マップされたす。

䞻にヒストグラムの䜜成時に䜿甚されたす

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

その機胜により、単語の頻床を数える問題を簡単に解決できたす。

 #      word_counts = Counter (document) 

カりンタヌ蟞曞にはmost_commonメ゜ッドがあり、これは倚くの堎合䟿利です。

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

倚くの


セットたたはセットのデヌタ構造は、繰り返しのない順序付けされおいない芁玠のコレクションです。

 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 

倚くは2぀の理由で䜿甚されたす。 たず、セットのin操䜜は非垞に高速です。 特定のシヌケンスに属する芁玠の倧きなセットをチェックする必芁がある堎合、リストよりもセットデヌタ構造の方が適しおいたす。

 #  - 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 #    

2番目の理由は、デヌタセット内の䞀意の芁玠を取埗するこずです。

 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] 

倚くは、蟞曞やリストよりもはるかに少ない頻床で䜿甚されたす。

制埡構造


他のほずんどのプログラミング蚀語ず同様に、ifステヌトメントを䜿甚しお条件ごずにアクションを実行できたす。

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

さらに、将来䜿甚される可胜性のある単䞀行のトリプルif-then-else挔算子を䜿甚できたす。

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

Pythonにはルヌプがありたす

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

ただし、forルヌプはin挔算子でより頻繁に䜿甚されたす。

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

より耇雑なルヌプ制埡ロゞックが必芁な堎合は、挔算子を䜿甚できたす

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

その結果、0、1、2、および4が印刷されたす。

真実


Pythonのブヌル倉数は、他のほずんどのプログラミング蚀語ず同じように機胜したすが、1぀だけ䟋倖がありたす-倧文字です

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

存圚しない倀を瀺すために、他の蚀語のnullに察応する特別なNoneオブゞェクトが䜿甚されたす。

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

Pythonは、ブヌル型が期埅される任意の倀を䜿甚できたす。 次のすべおの芁玠のブヌル倀はFalseです。


他のほずんどすべおが真実ず芋なされたす。 これにより、空のリストをチェックするifステヌトメントを簡単に䜿甚できたす。 空行、空の蟞曞など。ただし、次のこずを考慮しないず、認識しにくい゚ラヌが発生する堎合がありたす。

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

同じこずをする簡単な方法を次に瀺したす。

 first_char = s and s [0] 
論理挔算子は、最初の倀がtrueの堎合は2番目の倀を返し、falseの堎合は最初の倀を返すためです。 同様に、次の匏のxが数倀、たたは堎合によっおはNoneの堎合、結果は䜕らかの圢で数倀になりたす。

 safe  =  or 0 #   

Pythonのすべおの組み蟌み関数はリストを受け取り、各リスト項目がtrueの堎合にのみTrueを返したす。少なくずも1぀の芁玠がtrueの堎合、組み蟌み関数はtrueを返したす。

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

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


All Articles