乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      火力全開,一網(wǎng)打盡Python常用知識點!

       Four兄 2019-08-30
      出處:AI派

      作者:賈勝杰,碩士,退役軍人,電氣工程專業(yè),現(xiàn)成功轉(zhuǎn)行K12領(lǐng)域數(shù)據(jù)挖掘工程師,不僅在數(shù)據(jù)清理、分析和預測方向,而且在自制力和高效學習方面都有豐富經(jīng)驗。 

      Python可以說是近兩年最火的編程語言了,這主要是因為它的以下兩個突出特點:

      • 簡單易學,一周入門,會英語就能讀懂Python,比如說print('Hello world!')執(zhí)行的功能就是其字面意思;

      • 拓展豐富,取之不盡的拓展包讓Python如虎添翼,不管是做Web開發(fā)還是人工智能,Python都可以輕松搞定。

      ??文中會涉及的編程相關(guān)術(shù)語較多,關(guān)鍵術(shù)語我會進行解釋,其他的我會以鏈接的形式供大家自行查閱。

      本篇文章包含的知識點有:環(huán)境搭建,Python編碼規(guī)范,變量與字面量,數(shù)據(jù)類型與運算符,控制流,函數(shù)。

      環(huán)境搭建

      所謂“環(huán)境搭建”,就是在電腦本機或線上提前準備好Python數(shù)據(jù)分析的基本需求,好比是在烹飪前先搭建好灶臺一樣。這里相對簡單,我做出一些推薦和評價,大家按需去選擇安裝就行。

      • 本地搭建首選:Anaconda[https://www./], the world's most popular data science platform. 對小白友好,直接下載安裝即可,內(nèi)置數(shù)據(jù)科學相關(guān)的所有庫;后期熟練了之后,還可以用于環(huán)境&庫管理;自帶Jupyter Notebook[https:///](可能是現(xiàn)階段最好用的數(shù)據(jù)科學工具)和Spyder[https://www.](不是特別好用的Python IDE[https://en./wiki/Integrated_development_environment])。

      • 線上首選:Azure Notebook[https://notebooks./]。如果你不想在自己的電腦上配置環(huán)境,那么你可以嘗試下線上的Notebook;如果你用Google方便,那強烈推薦 Google Colab[https://colab.research.google.com/],在這里你還能用上免費的GPU。

      • 編輯器推薦:Visual Studio Code[https://code./],拓展豐富,配色美觀,一旦用上就會愛上。

      配置好之后嘗試你的第一個python代碼吧!

      print('Hello world!')

      Python編碼規(guī)范

      編碼規(guī)范是法律一樣的存在,非常重要,所以請大家一定要恪守這個法律,在初學階段打好基礎(chǔ),養(yǎng)成良好的編碼習慣。

      • 行與縮進

        python最具特色的就是使用縮進來表示代碼塊, 同一個代碼塊的語句必須包含相同的縮進空格數(shù),縮進的空格數(shù)是可變的,但是有個不成文的規(guī)定就是使用4個空格的縮進。

        比如:

        if True:
          print ('True')
        else:
          print ('False')

        但如果像如下這樣就會因為縮進問題報錯:

        if True:
          print ('Answer')
          print ('True')
        else:
          print ('Answer')
        print ('False')    # 縮進不一致,會導致運行錯誤

        報錯會提示如下:

        IndentationError: unindent does not match any outer indentation level

        所以,如果你的程序運行后,出現(xiàn)這種錯誤提示,那你就要檢查下,你的代碼縮進是不是有問題了。

      • 注釋

      Python中單行注釋以 # 開頭,多行注釋可以用多個 #號,或者  ''''''(主要作聲明函數(shù)用),示例如下:

      # 注釋1
      # 注釋2
      def hello():
          '''
          this is a print function.
          '''
          print ('Hello,Python!')
      • 更多更詳細的python編寫規(guī)范請參考 PEP8規(guī)定(https://www./dev/peps/pep-0008/),或者查看中文版(https://blog.csdn.net/ratsniper/article/details/78954852)。

      變量與字面量

      變量與數(shù)學方程中的概念類似,都是用于指代某一值,便于在其他位置調(diào)用。在Python中,我們按照變量名 = 某值的方式對變量進行賦值:

      a = 123 
      name = 'Allen'

      字面量就是那些只能代表自己實際值的量,比如說上面代碼中的123'Allen',字面量不能做為變量名。

      ??變量名的命名規(guī)則:用字母或字母數(shù)字的組合表示;數(shù)字不能作為變量名的開頭;變量名中不能出現(xiàn)空格,可以用_代替空格;變量名要起得有意義,比如說表示名字,最好使用namename_1等。

      數(shù)據(jù)類型

      我們在工作中會遇到各種類型的數(shù)據(jù),比如數(shù)字、字符、圖片等等,那么Python在處理這些數(shù)據(jù)時,會根據(jù)他們的類型,貼上一個標簽,這個標簽就是數(shù)據(jù)類型。

      整型(int)

      • 表示整數(shù)。在混合計算中,python會把整型轉(zhuǎn)為浮點型,如5 / 2

      • 可以使用int(value)來將數(shù)字value轉(zhuǎn)換為int類型。

      浮點型(float)

      • 表示小數(shù)。特別的,在Pandas和Numpy等庫中會用NaN(Not a Number)填充某一表格中的空值,但這個NaN的類型是浮點型;

      • 可以使用float(value)來將數(shù)字value轉(zhuǎn)換為float類型。

      布爾型(bool)

      • 只有兩個值即TrueFalse,表示真與假,主要用于邏輯判斷;

      • 可以使用bool(value)來將值value轉(zhuǎn)換為bool類型。

      ??這里可能會有一些疑惑,在python中,所有的0以及空值的布爾值都為False, 比如說None,0(整型0),0.0(浮點型0),0.0+0.0j(復數(shù)0),''(空字符串),[](空列表),()(空元組),{}(空字典)等。這在后面做邏輯判斷中,非常有用。

      字符串(str)

      字符串就是由字符穿起來的串兒,會放在單引號或者雙引號,甚至是三引號中。

      ??四引號可以嗎?自己試試看!

      • 定義

      一般的,我們把一串字符放到引號中就可以定義一個字符串,但如果這串字符中就包含有引號時,就會跟界定字符串的引號發(fā)生沖突,這怎么辦呢?比如說I'm Allen或者He said:'Life is short.'.其實并不難,我們只需要解決這個沖突就可以了

      #方法一:換其他引號作為字符串的界定
      str_a = “I'm Allen”
      str_a = 'He said:'Life is short.''
      #方法二:使用轉(zhuǎn)義符號
      str_a = 'I'm Allen'

      ??特別的,三引號可以保持原字符串的排版格式,試試看~

      • 索引

      當我們想從某個字符串中提取某一個字符的時候,就需要用到索引了,你可以把索引理解為某字符在字符串中的次序,然后把這個次序放到一對中括號里就可以了。比如

      str_a = 'Life is short.' #定義一個字符串
      #提取f,利用正索引(從左往右,從0開始計數(shù))
      str_a[2]
      #提取h,利用負索引(從右往左,從-1開始計數(shù))
      str_a[-5]

      索引是一個非常重要的概念,隨著學習的深入,你會發(fā)現(xiàn)索引無處不在。

      • 切片

      利用索引提取字符串中某一部分就是切片。其用法為[起始位:終止位:步長],得到的是一個由起始位終止位間隔為步長-1的前閉后開區(qū)間。

      str_a[3:6] #步長為1時可以省略,提取的結(jié)果為'e i'(注意空格也算一位)
      str_a[1:6:2]  #結(jié)果為'iei'

      ??str_a[::-1]的結(jié)果會是什么呢?動手試試看!

      • 常用函數(shù)

      #查看字符串長度
      len(str_a)
      #修改字符串的大小寫
      str_a.upper() #全部改為大寫
      str_a.lower() #全部改為小寫
      str_a.title() #改為首字母大寫
      #查看字符's'在str_a中的索引
      str_a.index('s') 
      #字符串拼接
      str_a + str_b 
      str_a * n #str_a重復n次

      列表(List)

      寫在方括號 [] 內(nèi),各元素用逗號分隔開。元素可以是數(shù)字、字符串或者列表。可以看到,字符串是字符組成的可迭代對象(iterable),而列表是由元素組成的可迭代對象,所以,兩者的很多屬性都是相通的,比如說索引切片都可以用在列表中。

      • 列表與字符串

      str_a = '小學_數(shù)學_第一次考試'
      #將str_a中的各個屬性挑出來
      str_a.split('_') #根據(jù)字符'_'對字符串進行分割
      >>> 結(jié)果:['小學','數(shù)學','第一次考試']
      #我們將列表list_a = ['小學','數(shù)學','第一次考試']合并為字符串
      '_'.join(list_a) #將字符'_'添加到各個元素中間,并進行連接
      >>> 結(jié)果:'小學_數(shù)學_第一次考試'
      • 常用函數(shù)

      len()index()函數(shù)及+/*的用法與字符串一致。

      #添加元素
      list_a.append('a') #將字符a添加到list_a的末尾
      list_a.insert(index,'a') #將字符a插入到list_a中索引為index的位置
      #刪除元素
      list_a.remove('a)
      #排序
      list_a.sort(reverse=False) #默認升序,可設(shè)置reverse=True來實現(xiàn)降序

      字典(Dictionary)

      寫在大括號{ }里,是一個無序的鍵(key):值(value)對集合,每一對用逗號隔開。

      key必須為不可變類型,如Number(數(shù)字)或String(字符串),并且在一個字典中每個key都是唯一的

      #定義
      dict_a = {'小明':'優(yōu)秀','小華':'優(yōu)秀','小李':'良好'}
      #增加
      dict_a['小王'] = '良好'
      #提取
      dict_a['小明']
      dict_a.get('小明')
      >>> 結(jié)果:'優(yōu)秀'
      #查看所有key,value等
      dict_a.keys()
      dict_a.values()
      dict_a.items() #返回所有的key,value對
      #更新
      dict_a.update(dict_b) #用dict_b更新dict_a

      運算符

      算術(shù)運算符

      假設(shè) a = 12, b = 26

      運算符描述實例
      +加,數(shù)字就是做加法/字符串就是拼接a + b 輸出結(jié)果 28
      -減,做減法a - b 輸出結(jié)果 -28
      *乘 ,數(shù)字的話就是相乘/字符串的話就是重復若干次a * b 輸出結(jié)果  312
      /除,做除法b / a 輸出結(jié)果  2.1666666666666665 (自動轉(zhuǎn)化為浮點型)
      %取模 , 即做除法后的余數(shù)b % a 輸出結(jié)果 2
      **a**b 為12的26次方
      //取整,即做除法后的商9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0

      賦值運算符

      運算符描述實例
      =簡單的賦值運算符c = a + b 將 a + b 的運算結(jié)果賦值為 c
      +=加法賦值運算符c += a 即 c = c + a(常用 i += 1,表示遞增)
      -=減法賦值運算符c -= a 即 c = c - a

      比較運算符

      運算符描述
      ==等于;比較對象是否相等
      !=不等于;比較兩個對象是否不相等
      >大于 ;返回x是否大于y
      <小于 ;返回x是否小于y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。
      >=大于等于;返回x是否大于等于y。
      <=小于等于;返回x是否小于等于y。

      邏輯運算符

      運算符邏輯表達式描述
      andx and y即邏輯 “與”
      orx or y即邏輯 “或”
      notnot x即邏輯 “非”

      成員運算符

      即查看指定的序列中是否存在某值,這個序列可以是字符串、列表或者元組。

      運算符描述
      in找到值返回 True,否則返回 False。
      not in與in相反

      恒等運算符

      運算符描述
      is檢查兩邊是否恒等
      is not檢查兩邊是否不恒等

      控制流

      條件語句if

      • 代碼模板:

        if <條件判斷1>:
          <執(zhí)行1>
        elif <條件判斷2>:
          <執(zhí)行2>
        elif <條件判斷3>:
          <執(zhí)行3>
        else:
          <執(zhí)行4>

        注意:一定要注意縮進與對齊,尤其是有if語句嵌套的情況下。

      循環(huán)語句

      for循環(huán)

      • for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串,通俗點說,就是把這個序列中的第一個元素到最后一個元素依次訪問并執(zhí)行冒號后面的語句

      • 其一般格式為:

        for <元素> in <序列>:
            <執(zhí)行語句>

      while循環(huán)

      • for循環(huán)和while循環(huán),兩者的相同點在于都能循環(huán)做一件重復的事情;不同點在于,for循環(huán)是在序列窮盡時停止,while循環(huán)是在條件不成立時停止。當這個條件永遠不為False時,就會出現(xiàn)死循環(huán)。

      • 其一般格式為:

        while <判斷條件>:
            <執(zhí)行語句>

      break和continue

      • break 語句可以跳出 for 和 while 的循環(huán)體。

        示例:

        for letter in 'Python':     # for實例
           if letter == 't':
              break
           print ('當前字母為 :', letter)

        i = 10                    # while實例
        while i > 0:              
           print ('當期變量值為 :', i)
           i -= 1
           if i == 5:
              break

        執(zhí)行語句后的輸出結(jié)果為:

        當前字母為 : P
        當前字母為 : y

        當期變量值為 : 10
        當期變量值為 : 9
        當期變量值為 : 8
        當期變量值為 : 7
        當期變量值為 : 6
      • continue是跳過當前循環(huán)塊中的剩余語句, 也就是跳過continue后面的語句

        示例:

        for letter in 'Python':     # for實例
           if letter == 't':
              continue
           print ('當前字母為 :', letter)

        i = 5                    # while實例
        while i > 0:              
           i -= 1
           if i == 3:
              continue
            print ('當期變量值為 :', i)

        執(zhí)行代碼后的輸出結(jié)果為:

        當前字母為 : P
        當前字母為 : y
        當前字母為 : h
        當前字母為 : o
        當前字母為 : n

        當期變量值為 : 4
        當期變量值為 : 2
        當期變量值為 : 1
        當期變量值為 : 0

      綜上呢,for更適合可迭代情況下使用,while更適合不知道要循環(huán)多少次的時候使用。

      zip函數(shù)

      • zip函數(shù)的輸入位可迭代的對象,輸出為對應(yīng)元素的元組

      • 其一般格式為:

        zip([a],[b])
      • 使用zip函數(shù)可以節(jié)約不少內(nèi)存

      • 可以使用list()來轉(zhuǎn)換輸出zip函數(shù)的結(jié)果

      • 若zip的兩個輸入序列長度不一致,則以短的那個為參考

      • *zip可以理解為zip的反函數(shù),可以將元組解壓為列表

        示例:

        a = [1,2]
        b = [3,4]
        c = [5,6,7]
        zip_1 = zip(a,b)
        print(list(zip_1))
        >>> [(1,3),(2,4)]

        zip_2 = zip(a,c)
        print(list(zip_2))
        >>> [(1,5),(2,6)]

        a1,c1 = zip(*zip_1)
        print(a1,c1)
        >>> (1,2) (3,4)

      enumerate函數(shù)

      • 該函數(shù)是將一個可遍歷的數(shù)據(jù)對象(如列表、元組或字符串)組合為一個帶索引和元素的元組

      • 其一般格式為:

        enumerate(<序列>, start=0)
        #start表示下標的起始位置
      • 常與for…in…聯(lián)用

        示例:

        a = [1,2]

        print('起始下標為默認:')
        for i,j in enumerate(a):
          print(i,j)

        print('起始下標為1:')
        for i,j in enumerate(a,start = 1):
          print(i,j)

        執(zhí)行代碼,輸出結(jié)果為:

        起始下標為默認:
        0 1
        1 2
        起始下標為1:
        1 1
        2 2

      列表推導式

      • 列表推導式是一種非常Pythonic的方式,可以簡單理解為:定義一個空表,然后用表中的語句填充該表。

      • 其一般格式為:

        [表達式 for 變量 in 序列或迭代對象]

        示例:

        #查看兩個列表中的不同元素
        #普通方式
        diff = []
        for item in list_a:
          if item not in list_b:
              diff.append(item)
        #列表推導式
        [item for item in list_a if item not in list_b]

        #與zip函數(shù)結(jié)合,計算兩個列表對應(yīng)元素之和
        [i[0]+i[1] for i in zip(list_a,list_b)]

      函數(shù)

      定義函數(shù)

      • 其一般格式為:

        def 函數(shù)名(參數(shù)):
        '''
        函數(shù)說明
        '''
        函數(shù)語句
      • 函數(shù)說明是建議非必需

      • 函數(shù)語句最后以return(表達式)結(jié)尾,則返回值;若不帶表達式,則返回None

      參數(shù)

      默認參數(shù)和關(guān)鍵字參數(shù)不在贅述,在此只講述一種不定長參數(shù)。

      • 若在參數(shù)前面加一個星號*,則將所有未命名的參數(shù)以元組的形式導入;

      • 若在參數(shù)前面加兩個星號**,則參數(shù)會以字典的形式導入。

      示例:

      #定義函數(shù)
      def tupleprint(a, *tupleb ):
      '''
      打印任何傳入的參數(shù)
      '''
         print ('輸出: ')
         print (a)
         print (tupleb)

      #調(diào)用函數(shù)
      tupleprint(1,2,3)

      執(zhí)行代碼,輸出結(jié)果為:

      輸出: 
      1
      (2, 3)

      變量作用域

      變量的作用域就是能訪問該變量的程序部分。

      • 在python中,只有模塊(module),類(class)以及函數(shù)(def、lambda)才會引入新的作用域 ,而其他如if/for/while等是不會引入新的作用域的。

      • 全局變量即可以在整個程序范圍內(nèi)都可以訪問;局部變量只能在其被定義的函數(shù)內(nèi)調(diào)用。

        示例:

        global_a = 0 # 這是一個全局變量
        # 定義函數(shù)
        def sum( a, b ):
          global_a = a + b # global_a在這里是局部變量.
          print ('局部變量為: ', global_a)
          return global_a

        #調(diào)用函數(shù)
        sum(1,2)
        print ('全局變量為: ', global_a)

        執(zhí)行代碼,輸出結(jié)果為:

        局部變量為:  3
        全局變量為:  0
      • 當局部代碼想要修改全局變量時,就會用到global和nonlocal關(guān)鍵字了 。

        示例:

        num = 1
        def fun1():
          global num  # 需要使用 global 關(guān)鍵字聲明
          print(num) 
          num = 123
          print(num)
        fun1()
        print(num)

        執(zhí)行代碼,輸出結(jié)果為:

        1
        123
        123

        nonlocal的用法類似,用在嵌套函數(shù)中,當只想修改嵌套作用域的變量而非全局變量時使用。

      可更改對象與不可更改對象

      在數(shù)據(jù)類型中也提到過,python中的可變類型(列表、字典和集合)與不可變類型(數(shù)字,字符串和元組),那在函數(shù)中作為變量進行傳遞時會是怎樣呢?

      示例1:

      #定義函數(shù)
      def fun1(a):
          a = 2
          print(a)

      b = 1
      fun1(b)
      print(b)

      示例2:

      def fun2(list_a):
          list_a.append(2)
          print(list_a)

      list_b = [0,1]
      fun2(list_b)
      print(list_b)

      嘗試下,上面這兩個示例的輸出結(jié)果,有什么區(qū)別?

      匿名函數(shù)

      • 使用lambda創(chuàng)建

      • 所謂匿名,就是不需要def語句

      • 擁有自己的命名空間,而且只能訪問自己命名空間中的變量

      • 語法格式為:

        lambda <變量>:<語句>

      lambda函數(shù)在后續(xù)的Pandas數(shù)據(jù)分析中會經(jīng)常用到,一定要熟練掌握呀。

      最后

      對于小白來說,編寫代碼是個很大的挑戰(zhàn),如果剛開始寫不出來,那可以嘗試先按照‘目的-拆分步驟-逐個實現(xiàn)’的流程去寫偽代碼,然后再翻譯成python語句,比如:

      #問題:對學生進行成績分級,90分以上為A,80分-90分為B,其余為C
      #目的:輸入 成績,按照規(guī)則對應(yīng)為評分并輸出
      #步驟&偽代碼:
      #1.輸入成績
      #2.對成績進行判斷,如果成績大于90,則返回A;如果成績大于80則返回B;其余返回C;(分情況判定 用if語句)
      #翻譯成python
      def score_to_grade(score): #定義函數(shù),輸入成績score
          if score > 90:
              return ('你獲得了:A')
          elif score > 80:
              return ('你獲得了:B')
          else:
              return ('你獲得了:C')       

      這里只是舉了一個很簡單的例子,但面對的問題越復雜,就越要嘗試用目的-拆分步驟-逐個實現(xiàn)的流程去做,復雜問題就會迎刃而解了。
      此外,有問題可以通過以下途徑解決:

      • 必應(yīng)搜索

      • 菜鳥教程(http://www.runoob.com/python3/python3-tutorial.html)

      • stackoverflow(https:///)

      • Python for Data Analysis, 2nd Edition(http://ick/Qve)

      • Python Cookbook(http://python3-cookbook./zh_CN/latest/)

      (完)

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多