Python基礎學習筆記(一)

簡單介紹Python入門基礎,介紹Python的數據類型,詳細描述字符串、列表、元組三種類型

一、基本數據類型
1、 整數:表示方法與數學相同,也可採用16進制。整數運算一定是精確的。
在Python中,有兩種除法,一種除法是/:

>>> 10 / 3
3.3333333333333335

/除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數:

>>> 9 / 3
3.0

還有一種除法是//,稱爲地板除,兩個整數的除法仍然是整數:

>>> 10 // 3
3

整數的地板除//永遠是整數。要做精確的除法,使用/就可以。
因爲//除法只取結果的整數部分,所以Python還提供一個餘數運算,可以得到兩個整數相除的餘數:

>>> 10 % 3
1

2、浮點數:類型同C語言,運算可能存在四捨五入的誤差。
3、字符串:字符串是以單引號’或雙引號"括起來的任意文本。
如果字符串內部既包含’又包含“可以用轉義字符\來標識,比如:‘I’m “OK”!’
如果字符串內部有很多換行,用\n寫在一行裏不好閱讀,爲了簡化,Python允許用’’’…’’'的格式表示多行內容,如:

>>> print('''line1
... line2
... line3''')
line1
line2
line3

4、 轉義字符:轉義字符基本與C語言類似,因此\表示\。爲了簡化,Python還允許用r’‘表示’'內部的字符串默認不轉義
5、布爾值:布爾值只有True和False兩種,要麼是True,要麼是False,在Python中,可以直接用True、False表示布爾值(請注意大小寫),也可以通過布爾運算計算出來。布爾值可以用and、or和not運算。類型與C語言相似。布爾值經常用在條件判斷中。
6、變量:變量在程序中就是用一個變量名錶示了,變量名必須是大小寫英文、數字和_的組合,且不能用數字開頭。在Python中,等號=是賦值語句,可以把任意數據類型賦值給變量,同一個變量可以反覆賦值,而且可以是不同類型的變量(因此,它在最初賦值的時候並不需要定義變量類型)。
7、常量:所謂常量就是不能變的變量,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變量名錶示常量,比如PI。但事實上PI仍然是一個變量,Python根本沒有任何機制保證PI不會被改變,所以,用全部大寫的變量名錶示常量只是一個習慣上的用法,如果你一定要改變變量PI的值,也沒人能攔住你。
二、字符串和編碼
1、Python的字符串支持多種語言。
2、對於單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換爲對應的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

3、如果知道字符的整數編碼,還可以用十六進制這麼寫:

>>> '\u4e2d\u6587'
'中文'

4、由於Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。如果要在網絡上傳輸,或者保存到磁盤上,就需要把str變爲以字節爲單位的bytes。以Unicode表示的str通過encode()方法可以編碼爲指定的bytes。反過來,如果我們從網絡或磁盤上讀取了字節流,那麼讀到的數據就是bytes。要把bytes變爲str,就需要用decode()方法。
在轉換時,純英文的str可以用ASCII編碼爲bytes,內容是一樣的,含有中文的str可以用UTF-8編碼爲bytes。含有中文的str無法用ASCII編碼,因爲中文編碼的範圍超過了ASCII編碼的範圍,Python會報錯。如果bytes中包含無法解碼的字節,decode()方法會報錯;如果bytes中只有一小部分無效的字節,可以傳入errors='ignore’忽略錯誤的字節。

>>> 'ABC'.encode('ascii')
b'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

Python對bytes類型的數據用帶b前綴的單引號或雙引號表示,如:x = b’ABC’。
要注意區分’ABC’和b’ABC’,前者是str,後者雖然內容顯示得和前者一樣,但bytes的每個字符都只佔用一個字節。
5、要計算str包含多少個字符,可以用len()函數;如果換成bytes,len()函數就計算字節數。
6、由於Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,爲了統一編碼通常在文件開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;
第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
同時,在文件編輯的過程中,一定要使用utf-8 without boom進行編碼。
三、格式化
1、在Python中,採用的格式化方式和C語言是一致的,用%實現,如:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

2、如果不太確定應該用什麼,%s永遠起作用,它會把任何數據類型轉換爲字符串,並且規定用%%來表示一個%。
3、另一種格式化字符串的方法是使用字符串的format()方法,它會用傳入的參數依次替換字符串內的佔位符{0}、{1}……,不過這種方式寫起來比%要麻煩得多:

>>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成績提升了 17.1%'

四、list
1、 Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。用len函數可得到list的元素個數。
比如,列出班裏所有同學的名字,就可以用一個list表示:

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

2、用索引來訪問list中每一個位置的元素,索引是從0開始的。索引越界後會報錯,所以,最後一個元素的索引是len() – 1。如果要取最後一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最後一個元素。同理,也可以獲取倒數的後幾個元素。
3、list是一個可變的有序表,所以,可以往list中追加元素到末尾,也可以把元素插入到指定的位置,

>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']

4、要刪除list末尾的元素,用pop()方法;要刪除指定位置的元素,用pop(i)方法,其中i是索引位置

>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']

5、要把某個元素替換成別的元素,可以直接賦值給對應的索引位置。

>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']

6、list裏面的元素的數據類型也可以不同。
7、list元素也可以是另一個list。

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

要注意s只有4個元素,其中s[2]又是一個list,如果拆開寫就更容易理解了:

>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']

要拿到’php’只需要寫p[1]或者s[2][1]。
五、tuple
1、tuple和list非常類似,但是tuple一旦初始化就不能修改。因爲tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就儘量用tuple。
2、要定義一個只有1個元素的tuple,如果你這麼定義:

>>> t = (1)
>>> t
1

定義的不是tuple,是1這個數!這是因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。
所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:

>>> t = (1,)
>>> t
(1,)

Python在顯示只有1個元素的tuple時,也會加一個逗號,,以免你誤解成數學計算意義上的括號。
3、最後來看一個“可變的”tuple:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

這個tuple定義的時候有3個元素,分別是’a’,'b’和一個list。實質上改變的還是list。

發佈了9 篇原創文章 · 獲贊 4 · 訪問量 608
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章