天天看點

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

歡迎大家來到“Python從零到壹”,在這裡我将分享約200篇Python系列文章,帶大家一起去學習和玩耍,看看Python這個有趣的世界。所有文章都将結合案例、代碼和作者的經驗講解,真心想把自己近十年的程式設計經驗分享給大家,希望對您有所幫助,文章中不足之處也請海涵。

Python系列整體架構包括基礎文法10篇、網絡爬蟲30篇、可視化分析10篇、機器學習20篇、大資料分析20篇、圖像識别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的關注、點贊和轉發就是對秀璋最大的支援,知識無價人有情,希望我們都能在人生路上開心快樂、共同成長。

本文參考了作者和許老師CSDN的文章,真心推薦大家去學習。

文章目錄:

  • 一.初聊Python
  • 二.Python簡介及安裝入門
  • 三.基礎文法
  • 四.資料類型
  • 五.字元串操作
  • 六.總結

為什麼要學習Python?

在學習Python之前,你不要擔心自己沒基礎或“腦子笨”,我始終認為,隻要你想學并為之努力,就能學好,就能用Python去做很多事情。在這個喧嚣的時代,很多技術或概念會不斷興起,我希望你能沉下心來去學習,不要急于求成,一步一個腳印。當你把某個技術學好、學精後,還是能做一些事情的,甚至能找到喜歡的工作或完成實踐項目。

程式語言沒有最好,隻有最适合。作為一名初學者,我非常推薦你學習Python,為啥?一方面是因為它具有文法清晰、代碼友好、易讀性高的特點,同時Python擁有強大的第三方庫函數,包括網絡爬取、資料分析、可視化、人工智能等;另一方面Python既是一門解釋性程式設計語言,又是面向對象的語言,其操作性和可移植性高,被廣泛應用于資料挖掘、資訊采集、人工智能、網絡安全、自動化測試等領域。甚至,很多國小生、高中課程和計算機二級也都陸續增加了Python。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

Python優勢

Python最大的優勢在于效率。有時候程式員或科研工作者的效率比機器的效率更重要,對于很多複雜性的功能,使用更加清晰的語言能給程式減少更多的負擔,進而大大增強程式的品質,其易學性和擴充性也能讓新手很快上手。雖然Python底層運作速度要比C語言慢,但Python清晰的結構能解放程式員的時間,同時很友善的和其他程式設計語言代碼(如C語言)融合在一起。

是以,從來沒有一種程式設計語言可以像Python這樣同時紮根在這麼多領域,并且Python支援跨平台操作,也支援開源,擁有強大的第三方庫。尤其随着人工智能的持續火熱,Python在IEEE近幾年釋出的最熱門語言中多次排名第一,越來越多的程式愛好者、科技關注者也都開始學習Python。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

Python學習建議

在Python學習過程中,不要覺得你的底子薄或者之前沒接觸過,就想放棄,很多人還沒起跑就選擇退賽。我想,隻要沉下心來,肯下功夫,就能學好。在學習過程中,一定要去寫代碼、寫代碼、寫代碼,隻寫真正動手去實踐,才能慢慢積累。

同時,編寫代碼過程中出錯也是家常便飯,我現在寫Python代碼每天不出點錯,心裡都躁得慌,是以遇到錯誤,學會百度、谷歌去解決真的非常重要,它也是你學習能力的一種提升,實在找不到錯誤,可以去開源論壇、社群、學習群裡提問,也歡迎來公衆号或CSDN找我。

接下來我給出許老師推薦的Python程式員成長路線圖,包括:基礎文法–>語感訓練–>課題練習–>分方向繼續學習–>中級程式員–>拓展深度和廣度–>進階程式員。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

這裡,給出我學習Python的一些曆程和技巧。我最早接觸Python是2013年,主要是因為研究所學生方向是自然語言處理,需要通過Python抓取資料并進行分析,是以就選擇了它。那些年Python的資料很少,也沒這麼火熱,但也一直堅持着,具體建議如下:

  • 先把環境安裝,開始編寫第一個Python代碼,别再去等明天了
  • 學習過程中切勿看視訊(書籍),喝着奶茶,就是一天,一定要動手敲代碼啊
  • 通常先了解Python基礎文法,推薦MOOC北理工嵩天老師的視訊和runoob文法,當然B站和CSDN上也有很多免費資料,大家可以去選擇: https://www.icourse163.org/course/BIT-268001 https://www.runoob.com/python/python-intro.html
  • 基礎文法大緻掌握後可以嘗試學習Python網絡爬蟲,因為不論是資料分析、機器學習、滲透測試等,都會涉及到爬蟲技術,隻有擁有自己的語料,才能處理更多問題。 爬蟲方面不用太深入,掌握兩門技術即可:Urllib、Requests、BeautifulSoup、XPath、Selenium、Scrapy、分布式爬蟲
  • 接下來學習Python可視化分析(詞雲)、微信操作、郵箱發送等功能,這些知識能有效提高你的程式設計興趣
  • 人工智能方向:包括機器學習(回歸 | 聚類 | 分類)、深度學習(TensorFlow | Keras | Pytorch)學習,建議結合實際科研或項目進行深入研究
  • 圖像識别方向:包括圖像處理、OpenCV、模式識别、機器學習、深度學習、目标檢測學習,也建議結合實際科研或項目進行深入研究
  • 其他方向學習:Web網站開發、網絡安全、自動化測試、應用程式編寫

學習路上沒有捷徑,隻有堅持,但你卻能通過Python不斷提升你的學習興趣,做一些喜歡的事,喜歡上這門語言。最後給出當年大三學習Python時激勵自己的話:If not now, when? If not me, who? 如果不是為了自己奮鬥,又是為誰;如果不是現在奮鬥,什麼時候開始呢?

1.Python簡介

Python是荷蘭人Guido van Rossum在1989年開發的一種腳本新解釋語言,它是一種面向對象的解釋型計算機程式設計語言。Python是純粹的自由軟體,其文法簡潔清晰,特色之一是強制使用空白符(White Space)作為語句縮進。由于Python具有豐富和強大的庫,常被昵稱為膠水語言。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

Python作為熱門語言,具有以下特點:

  • 文法清晰,代碼友好,易讀性好
  • 應用廣泛,具有大量的第三方庫支援,尤其是機器學習、人工智能相關庫
  • Python可移植性強,易于操作各種存儲資料的文本檔案和資料庫
  • Python是一門面向對象語言,支援開源思想
  • 能在多種功能、多種平台上撰寫腳本及快速開發

作者和許老師觀點一樣,不建議初學者上來就選擇像Anaconda或PyCharm等內建工具,在我看來它們提供的便利不如給使用者學習帶來的麻煩多。至少,在開始第一個星期不要使用IDE。對于Python這樣一種解釋型的腳本語言,一款趁手的編輯器就足夠。

  • 我們需要的是專注于python本身,而不是被工具使用問題所困擾。君不見,知乎上關于Pycharm和Vscode的使用說明、常見問題的解決方案,多得幾乎超過了讨論Python本身
  • 很多學生由于學校電腦的限制,安裝Python官方提供的輕量型工具學習更友善
  • 手工運作代碼,可以更直覺、更深刻地了解腳本的解釋執行過程
  • 手工調試代碼,有助于代碼優化,提高代碼把控能力
  • 可以更好地使用pip安裝和管理第三方子產品

當然,這些工具後續随着學習深入,作者也會普及和分享其功能用法。

  • Anaconda Python
  • PyCharm
  • Cpython
  • ActivePython
  • PyPy
  • Jython
  • Spyder
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

2.安裝流程

如果您選擇Windows系統下程式設計,則您可以在Python官網Downloads頁面中下載下傳程式設計軟體,其官網網址為“

http://www.python.org

”。同時,如果您是在Linux系統下編寫Python代碼,則您可以直接在Linux系統中内置安裝使用Python解釋器。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

從Python官網下載下傳時,請注意選擇正确的版本。如果是用于學習,下載下傳最新版沒有問題,如果是用于生産,則要考慮你開發需要的第三方子產品是否支援最新版的Python。注意,Python2已經不更新,建議大家學習Python3,兩者文法基本類似,僅部分功能修改。這裡作者選擇下載下傳Python3.6或Python3.7。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

安裝時不要忘記勾選最下面的兩個複選框,否則會給後續的子產品安裝帶來一些麻煩,推薦使用預設方式安裝。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

安裝成功後,需要在“開始”菜單中選中“程式”,找到安裝成功的Python軟體,如圖所示,打開解釋器編寫Python代碼。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

打開“Python 3.6(64-bit)”指令行軟體,輸入第一行Python代碼“I love python”,輸出結果如下圖所示。解釋型語言的優勢,就是可以寫一句執行一句,想到哪兒寫到哪兒,不必像編譯型語言那樣得把程式全部寫完,編譯成功後才能運作。我特别喜歡使用python的IDLE,甚至拿它當電腦用。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

但是如果你需要編寫大段代碼或自定義函數時,Python指令行肯定不是一個很好的選擇,此時讀者可以點選“IDLE”,運作Python的內建開發環境(Python Integrated Development Environment,IDLE),你可以用它來建立或打開.py腳本檔案,可以編輯、運作和調試,打開如下圖所示。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

接着可以點選“File”中“New File”建立檔案,并另存為py檔案,如“test01.py”,然後點選運作“Run Module F5”按鈕,運作Python腳本檔案。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

所有Python檔案将以.py為擴充名。将源代碼寫在test01.py檔案中運作。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結
很多時候,我們用IDLE驗證代碼的寫法是否正确,檢視子產品是否安裝成功以及版本号。IDLE支援tab鍵自動補齊,經常用這個功能檢視某個對象的方法和屬性。小技巧:
  • tab鍵自動補齊
  • 光标移動到執行過的語句上敲擊回車,可以重複這個指令
  • 下劃線(_)可以擷取最後一次執行結果

前面已經成功安裝了Python軟體,接下來我們開始講解Python的基礎文法,包括縮進與注釋、變量與常量、輸入與輸出、指派與表達式等。

1.縮進與注釋

縮進

不同于其他語言,在Python中通過縮進來标明代碼的層次關系。1個縮進等于4個空格,它是Python語言中标明程式架構的唯一手段。

在Python中,同一個語句塊中每條語句都是縮進的,并且縮進量相同,當回退或已經閉合語句塊時,需要回退至上一層的縮進量,表示目前塊結束。下面是C語言和Python文法的對比,其中C語言用大括号來區分層次關系,Python通過縮進來區分。

==縮進的空白數量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數量,這個必須嚴格執行。==

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

Python引号

Python 可以使用引号( ' )、雙引号( " )、三引号( ''' 或 """ ) 來表示字元串,引号的開始與結束必須是相同類型的。其中三引号可以由多行組成,編寫多行文本的快捷文法,常用于文檔字元串,在檔案的特定地點,被當做注釋。

word = 'eastmount'
sentence = "娜璋AI安全之家"
paragraph = """這是一個段落。
包含了多個語句"""           

注釋

注釋是用于說明代碼資訊的,注釋代碼是不執行的。Python注釋主要包括兩種:

  • 行注釋:采用#開頭進行單行注釋,如“#定義一個變量”。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 檔案名:test01.py

# 第一個注釋
print ("Hello World!")  # 第二個注釋           
  • 塊注釋:多行說明的注釋采用'''或"""開頭和結尾,比如使用Python內建開發環境Spyder建立檔案時,通常有一段注釋說明。
"""
Created on Sat Sep 16 10:34:31 2017
@author: yxz
"""           

多行語句

Python語句中一般以新行作為語句的結束符。但是我們可以使用斜杠( \)将一行的語句分為多行顯示,如下所示:

total = item_one + \
        item_two + \
        item_three           

語句中包含 [], {} 或 () 括号就不需要使用多行連接配接符。如下執行個體:

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']           

2.變量與常量

變量

變量是程式中值可以發生改變的元素,是記憶體中命名的存儲位置,變量代表或引用某值的名字,比如希望用N代表3,name代表“hello”等。其命名規則如下:

  • 變量名是由大小寫字元、數字和下劃線(_)組合而成的。
  • 變量名的第一個字元必須是字母或下劃線(_)。
  • Python中的變量是區分大小寫的,比如“TEST”和“test”是兩個變量。
  • 在Python中對變量進行指派時,使用單引号和雙引号是一樣的效果。

注意,Python中已經被使用的一些關鍵詞不能用于聲明變量,關鍵詞表如下:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def',
 'del', 'elif',  'else', 'except', 'exec', 'finally', 'for', 'from', 
 'global', 'if', 'import', 'in',  'is', 'lambda',  'not', 'or', 
 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']           

==不同于C/C++/Java等語言,Python中的變量不需要聲明,就可以直接使用指派運算符對其進行指派操作,根據所賦的值來決定其資料類型,下圖為未聲明輸出其類型。==

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

常量

常量是指程式中值不發生改變的元素,一旦初始化後就不能對其修改的固定值,它是記憶體中用來儲存固定值的單元。由于某種原因,Python并未提供如C/C++/Java一樣的const修飾符,換言之,python并沒有定義常量的關鍵字。但是Python可以使用對象的方法來建立常量,比如通過const.py檔案,将const類注冊到sys.modules全局字典中

3.輸入與輸出

輸出

輸出使用print()函數實作,包括輸出字元資訊或變量,在Python2中,輸出包括兩種格式:print a或print(a),表示輸出變量a的值。但Python3不再支援空格輸出,如果您之前使用的是Python2,我們需要注意這些差別。

如果需要輸出多個變量,則使用采用逗号連接配接,如print(a,b,c)。簡單示例如下圖所示,print()函數可以輸出各種類型的變量。

  • print(a,b,c)
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

同時,Python支援格式化輸出資料,需要調用format()函數實作,其輸出格式為:print(format(val,format_modifier)),其中參數val表示值、format_modifier表示格式字,示例如下圖所示。

  • print(format(val,format_modifier))
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

其中“6.2f”表示輸出6位數值的浮點數,小數點後精确到兩位,輸出值的最後一位采用四舍五入方式計算,最終輸出的結果為“12.35”。“.2%”表示輸出百分數,保留兩位有效數字,其輸出結果為“34.56%”。如果想輸出整數直接使用“.0f”即可。

輸入

Python輸入主要包括input()和raw_input()兩個函數。

  • input()

input()函數從控制台擷取使用者輸入的值,格式為:<變量>=input(<提示性文字>)。擷取的輸入結果為使用者輸入的字元串或值,并儲存在變量中。輸入字元串和整數執行個體如下,其中type()函數用于查找變量的類型。

>>> str1 = input("input:")
input:"I am a teacher"
>>> print(str1)
I am a teacher

>>> age = input("input:")
input:25
>>> print(age,type(age))
25 <class 'str'>
>>>            
  • raw_input()

raw_input()函數是另一個輸入操作,并傳回string字元串。輸入以換行符結束,通過help(raw_input)可以查找幫助,常見格式為:s = raw_input([prompt]),參數[prompt]可選,用于提示使用者輸入。示例代碼如下,第一段代碼輸入“hello world”,第二段代碼輸入“25”。

>>> str1 = raw_input("input:")
input:hello world
>>> print(str1)
hello world

>>> age = raw_input("input:")
input:25
>>> print(age,type(age))
25 <type 'str'>
>>>            

==注意,raw_input是2.x版本的輸入函數,在新版本環境下會報錯,該函數未定義。在3.x版本中應該用input()代替raw_input()。==

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

4.指派與表達式

指派

Python中的指派語句是使用等号(=)給變量直接指派,如“a=10”。如果需要同時給多個變量進行指派,表達式如下:

  • <變量1>,<變量2>,...,<變量n> = <表達式1>,<表達式2>,...,<表達式n>

它先運算右側N個表達式,然後同時将表達式結果賦給左側變量。舉例如下:

>>> a,b,c = 10,20,(10+20)/2
>>> print(a,b,c)
10 20 15.0
>>>           

表達式

表達式是程式中産生或計算新資料值的一行代碼,指派表達式如a=10,通常由變量、常量或操作符号産生表達式。定義表達式注意一下幾點:

  • 使用變量之前必須對其指派,使用指派表達式對其指派。
  • 表達式也需要遵循句首縮進規律,且不能改變其空格數量。
  • 表達式中可以适量增加空格,使程式可讀性更高,但空格不能分割變量的命名方式,比如“a = b + c”,在運算符之間适當增加空格。

講述完Python基礎知識後,讓作者帶領大家認識Python的常用資料類型。

1.數字類型

Python常見的數字類型包括整數類型、浮點數類型、複數類型。

  • 整數類型:對應的數學中的整數,其傳回類型為int型,如10、25等;long為長整型,也可以代表八進制和十六進制。
  • 浮點數類型:帶有小數點的數字,傳回類型為float型,如3.14、2.1e2等。
  • 複數類型:Python複數分為兩部分,形如a + bj,其中a為實部,b為虛部,傳回類型為complex,例如-12.3 + 8j。複數可以通過.real擷取實部資料,.imag擷取虛部資料。
>>> z = -12.3 + 8j
>>> print(z, type(z))
(-12.3+8j) <type 'complex'>
>>> print(z.real, z.imag)
-12.3 8.0           

注意:Python中數字類型是可以互相轉換的,其中浮點數調用int()函數轉換為整數,如int(3.14)傳回結果3,整數調用float()轉換為小數,浮點數調用complex()函數轉換為複數。

2.字元串類型

字元串類型在Python中是指需要用單引号或雙引号括起來的一個字元或字元串。該類型調用type('Python')傳回的結果是str類型。一般記為:

  • s="a1a2···an"(n>=0)

字元串表示一個字元的序列,其最左端表示字元串的起始位置,下标為0,然後依次遞增。字元串對應的編号稱為“索引”,比如str1='Python',則str1[0]擷取第一個字元,即“P”字母,并且字元串提供了一些操作和函數共使用者使用,比如len(str1)計算字元串長度,其傳回結果為6。

counter = 100         #指派整型變量
miles = 1000.0        #浮點型
name = "Eastmount"    #字元串           

python的字串清單有兩種取值順序:

  • 從左到右索引預設0開始的,最大範圍是字元串長度少1
  • 從右到左索引預設-1開始的,最大範圍是字元串開頭
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

如果你要實作從字元串中擷取一段子字元串的話,可以使用 [頭下标:尾下标] 來截取相應的字元串,其中下标是從0開始算起,可以是正數或負數,下标可以為空表示取到頭或尾。[頭下标:尾下标] 擷取的子字元串包含頭下标的字元,但不包含尾下标的字元。比如:

>>> s = 'abcdef'
>>> s[1:5]
'bcde'           

3.清單類型

清單是Python中非常重要的一個資料類型,它是在中括号([ ])中用逗号分隔的元素集合,清單中的元素可以通過索引進行單個通路,并且每個元素之間是有序的。例如:

>>> list1 = [1, 2, 3, 4, 5]
>>> print(list1)
[1, 2, 3, 4, 5]
>>> print(list1[0])
1
>>> print(type(list1))
<type 'list'>

>>> list2 = ['I', 'am', 'a', 'teacher']
>>> print(list2)
['I', 'am', 'a', 'teacher']
>>> print(list2[3])
teacher
>>>            

清單可以完成大多數集合類的資料結構實作。它支援字元、數字、字元串甚至可以包含清單(即嵌套)。清單用 [ ] 辨別,是Python最通用的複合資料類型。

清單中值的切割也可以用到變量 [頭下标:尾下标] ,就可以截取相應的清單,從左到右索引預設0開始,從右到左索引預設-1開始,下标可以為空表示取到頭或尾。(下圖參考runoob網站,推薦大家去學習)

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

清單中的每個元素可以定義不同的資料類型,如list1 = [1, 1.3, 'teacher']。其操作方法和字元串類似,如清單采用加号(+)拼接、采用乘号(*)重複顯示、也可以切片擷取清單中的子元素,示例如下:

>>> list1 = [1, 2, 3, 4, 5]
>>> list2 = [6, 7, 8]
>>> print(list1+list2)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> print(list2*3)
[6, 7, 8, 6, 7, 8, 6, 7, 8]
>>> print(list1[2:4])
[3, 4]
>>>            

清單中的常見方法如下表所示,假設存在清單list1 = [4, 2, 1, 5, 3]。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

4.元組類型

元組是和清單類似的一種資料類型,它采用小括号定義一個或多個元素的集合,其傳回類型為tuple。示例如下:

>>> t1 = (12, 34, 'Python')
>>> print(t1)
(12, 34, 'Python')
>>> print(type(t1))
<type 'tuple'>
>>> print(t1[2])
Python
>>>            

注意:可以定義空的元組,如t2=(),元組可以通過索引通路,比如上述代碼t1[2]通路第3個元素,即“Python”。當元組定義後就不能進行更改,也不能删除,這不同于清單,由于元組的不可變特性,它的代碼更加安全。

以下是元組無效的,因為元組是不允許更新的,而清單是允許更新的。錯誤提示:TypeError: 'tuple' object does not support item assignment,在程式設計構成中出錯或BUG是非常正常的,莫慌,解決掉它。

# -*- coding: UTF-8 -*-
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000    # 元組中是非法應用
list[2] = 1000     # 清單中是合法應用           
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

5.字典類型

字典(dictionary)是除清單以外python之中最靈活的内置資料結構類型。清單是有序的對象集合,字典是無序的對象集合。兩者之間的差別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。

字典是針對非序列集合而提供的,字典用"{ }"辨別,由鍵值對(< Key > < Value >)組成,字典是鍵值對的集合,其類型為dict。鍵是字典的索引,一個鍵對應着一個值,通過鍵值可查找字典中的資訊,這個過程叫做映射。

示例如下,通過鍵值對可以擷取“4”對應的“Guiyang”。

>>> dic = {"1":"Beijing","2":"Shanghai","3":"Chengdu","4":"Guiyang"}
>>> print(dic)
{'1': 'Beijing', '3': 'Chengdu', '2': 'Shanghai', '4': 'Guiyang'}
>>> print(dic["4"])
Guiyang           

字典與清單主要存在幾個差別:

  • 清單中的元素是順序排列的,字典中的資料是無序排列的。
  • 它們的映射方式不同,清單通過位址映射到值,字典通過鍵值對映射到值。
  • 清單隻能通過數字下标或索引通路,字典可以用各種對象類型作為鍵通路。

字典鍵值對靈活應用非常重要,尤其是網絡爬蟲Json格式解析,後面我們實際案例中會用到。下面給出一段簡單代碼,重點是keys()和values()用法。

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
 
print(dict['one']) #輸出鍵為one的值
print(dict[2])     #輸出鍵為2的值
print(tinydict)    #輸出完整字典
print(tinydict.keys())   #輸出所有鍵
print(tinydict.values()) #輸出所有值           

輸出結果如下圖所示:

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

個人覺得字元串操作也是Python非常好用的地方,不論是資料爬取、大資料分析或文本挖掘中,是以作者單獨将該部分拿出來進行講解。

字元串是指有序的字元序列集合,用單引号、雙引号、三重(單雙均可)引号引起來,其中使用三重引号括起來的字元串變量可以用來定義換行的字元串。比如:

str1 = 'hello world'
str2 = "hello world"
str3 = """hello world"""           

字元串支援格式化輸出,需要引入操作符百分号(%)實作,在百分号的左側放置一個格式化字元串,右側放置期望的格式化值,也可是元組和字典。例如:

>>> print("Hi!My Name is %s,I am %d years old and %f pounds heavy."%("YXZ", 26, 55.5))
Hi!My Name is YXZ,I am 26 years old and 55.500000 pounds heavy.
>>>            

依次輸出字元串(%s)、整數(%d)、浮點數(%s)三個值。同時字元串支援各種各樣的操作,尤其是處理文本内容時,需要使用這些方法及函數,下面講解常用函數。

基礎操作

字元串的基本操作包括求長度、拼接、重複操作、索引、切片等等。假設str1字元串為“hello”,str2字元串為“world”,則len(str1)計算字元串str1長度為5;str1+str2拼接後的結果為“helloworld”;str1*3字元串重複結果為“hellohellohello”。

字元串切片定義為s[i:j:step],其中step表示切片的方向,預設起點從0開始,終點不寫切到最後。例如:

str1 = 'abcdefghijklmn'
print(str1[3:6])
# def           

輸出結果為“def”,從第3個值開始擷取,第6個值為終點且不擷取,即str1[0]='a',str1[3]='d',str1[4]='e',str1[5]='f'。同樣,如果增加step參數且為負數,表示從反向切片。正方向第一個a索引下标值為0,最後一個n索引下标值為-1,結果為“nmlk”。

str1 = 'abcdefghijklmn'
print(str1[-1:-5:-1])
# nmlk           

find()函數

  • 用法:從字元串中查找子字元串,傳回值為子串所在位置的最左端索引。如果沒有找到則傳回-1,擴充的rfind()方法表示從右往左方向查找,常用于正規表達式爬取資料。
  • 示例:擷取字元串“def”的位置,位于第3個位置(從0開始計數)。
str1 = 'abcdefghijklmn'
num = str1.find('def')
print num
# 3           

split()函數

  • 用法:字元串分割函數,将字元串分割成序列,傳回分割後的字元串序列。如果不提供分割符,程式将會把所有空格作為分隔符。
  • 示例:預設按照空格分割字元串,也可以設定如“+”分割字元串,該方法在字元串分割、IP提取、URL字尾提取常用。
[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

strip()函數

  • 用法:該函數用于去除開頭和結尾的空格字元(不包含字元串内部的空格),同時S.strip([chars])可去除指定字元。擴充的函數lstrip()去除字元串開始(最左邊)的所有空格,rstrip()去除字元串尾部(最右邊)的所有空格。
  • 示例:去除字元串前後兩端的空格。
>>> str1 = "    I am a teacher    "
>>> print(str1.strip())
I am a teacher
>>>            

join()函數

  • 用法:通過某個字元拼接序列中的字元串元素,隊列中元素必須是字元串,傳回一個拼接好的字元串函數,可以認為join()函數是split()函數的逆方法。
  • 示例:采用空格(' ')拼接字元串['I','am','a','teacher'],代碼及輸出結果如下。
>>> num = ['I','am','a','teacher']
>>> sep = ' '
>>> str1 = sep.join(num)
>>> print str1
I am a teacher
>>>            

無論如何,作者都希望這篇文章能給您普及一些Python知識,更希望您能跟着我一起寫代碼,一起進步。如果文章能給您的研究或項目提供一些微不足道的思路和幫助,就更欣慰了。作者最大的期望就是文章中的一些故事、話語、代碼或案例對您有所幫助,緻那些努力奮鬥的人。

話說,作者當年通過Python其實是能找到一些好工作的,但由于喜歡教書,放棄了北京網際網路,選擇回到家鄉貴州,成為了一名高校教師。哈哈,當時其實就想回去教Python和大資料知識的,雖然隻是個普通的選擇,但真心希望自己能站在講台前,保持初心,教更多的學生、普及更多的Python程式設計知識,為家鄉培育更多的資料分析、資料挖掘、大資料、網絡安全等領域的人才,貢獻綿薄之力。最後以作者離開北京選擇回貴州任教的一首詩結尾:

貴州縱美路迢迢,

未付勞心此一遭。

收得破書三四本,

也堪将去教爾曹。

[Python從零到壹] 一.為什麼我們要學Python及基礎文法詳解一.初聊Python二.Python簡介及安裝入門三.基礎文法四.資料類型五.字元串操作六.總結

回想,自己2013年就在阿裡雲栖社群寫部落格,分享了200多篇文章,後來中斷轉去CSDN。現在開啟新的征途,希望能與阿裡雲社群的讀者一起一步。初來乍到,還請多多指教。

遺憾,讓我們懂得完美。逝去,讓我們不斷前行。她夜色中的身姿是那麼的美。

原文位址:

https://blog.csdn.net/Eastmount/article/details/108172132

(By:Eastmount 2020-08-21 夜于武漢)

參考文獻如下: