我的Python學習之旅(02)
我的Python學習之旅(02)
- 基本資料型別及變數的使用
- list和tuple
- 條件判斷和迴圈
- dict和set
好,接著上次的話題來說說Python的資料型別
首先,說個題外話,推薦學習python的大家去看看廖雪峰老師的部落格,講得十分詳細,受益匪淺,適合我們這種新手小白,此篇資料型別的講解就來自廖老師
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
在Python中,能夠直接處理的資料型別有以下幾種:
一、整數
Python可以處理任意大小的整數,當然包括負整數,在程式中的表示方法和數學上的寫法一模一樣,例如:1,100,-8080,0,等等。
計算機由於使用二進位制,所以,有時候用十六進位制表示整數比較方便,十六進位制用0x字首和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
二、浮點數
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數和浮點數在計算機內部儲存的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的誤差。
三、字串
字串是以”或”“括起來的任意文字,比如’abc’,”xyz”等等。請注意,”或”“本身只是一種表示方式,不是字串的一部分,因此,字串’abc’只有a,b,c這3個字元。如果’本身也是一個字元,那就可以用”“括起來,比如”I’m OK”包含的字元是I,’,m,空格,O,K這6個字元。
如果字串內部既包含’又包含”怎麼辦?可以用轉義字元\來標識,比如:
'I\'m \"OK\"!'
表示的字串內容是:
I'm "OK"!
轉義字元\可以轉義很多字元,比如\n表示換行,\t表示製表符,字元\本身也要轉義,所以\表示的字元就是\,可以在Python的互動式命令列用print列印字串看看:
>>> print 'I\'m ok.'
I'm ok.
>>> print 'I\'m learning\nPython.'
I'm learning
Python.
>>> print '\\\n\\'
如果字串裡面有很多字元都需要轉義,就需要加很多\,為了簡化,Python還允許用r”表示”內部的字串預設不轉義,可以自己試試:
>>> print '\\\t\\'
\ \
>>> print r'\\\t\\'
\\\t\\
如果字串內部有很多換行,用\n寫在一行裡不好閱讀,為了簡化,Python允許用”’…”’的格式表示多行內容,可以自己試試:
>>> print '''line1
... line2
... line3'''
line1
line2
line3
多行字串”’…”’還可以在前面加上r使用,請自行測試。
四、布林值
布林值和布林代數的表示完全一致,一個布林值只有True、False兩種值,要麼是True,要麼是False,在Python中,可以直接用True、False表示布林值(請注意大小寫),也可以通過布林運算計算出來:
>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 > 5
False
布林值可以用and、or和not運算。
and運算是與運算,只有所有都為True,and運算結果才是True:
>>> True and True
True
>>> True and False
False
>>> False and False
False
or運算是或運算,只要其中有一個為True,or運算結果就是True:
>>> True or True
True
>>> True or False
True
>>> False or False
False
not運算是非運算,它是一個單目運算子,把True變成False,False變成True:
>>> not True
False
>>> not False
True
布林值經常用在條件判斷中,比如:
if age >= 18:
print 'adult'
else:
print 'teenager'
空值
空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
此外,Python還提供了列表、字典等多種資料型別,還允許建立自定義資料型別
list和tuple
python內建兩種有序陣列型別,list和tuple
list是一種有序的集合,可以隨時新增和刪除其中的元素
而tuple是元組,一旦初始化就不能修改
list
>>> students = ['zhangsan', 'lisi', 'wangwu']
>>> students
['zhangsan', 'lisi', 'wangwu']
- 將元素插入到指定位置 —— insert
>>> students.insert(2, 'zhaoliu')
>>> students
['zhangsan', 'lisi', 'zhaoliu','wangwu']
而直接這樣賦值會把元素替換掉
>>> students[2] = 'zhaoliu'
>>> students
['zhangsan', 'lisi', 'zhaoliu']
- 獲取列表個數—— len()
>>> len(students)
3
- 刪除列表末尾元素——pop()
>>> students.pop()
'wangwu'
>>> students
['zhangsan', 'lisi']
- 刪除列表指定位置元素——pop(x)
>>> students.pop(1)
'lisi'
>>> students
['zhangsan', 'zhaoliu']
- 小技巧
一、當索引超出了範圍時,Python會報一個IndexError錯誤
IndexError: list index out of range
所以,要確保索引不要越界,記得最後一個元素的索引是len(students) - 1
二、要取最後一個元素,除了計算索引位置外,還可以用-1做索引,直接獲取最後一個元素
>>> students[-1]
'wangwu'
以此類推,可以獲取倒數第2個、倒數第3個
三、list元素也可以是另一個list
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
或
>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']
↑ 這樣是不是更簡潔易懂?其實就是個二維陣列嘛
訪問的話就是
>>>s[2][1]
'asp'
三、給list賦空值
>>> ls = []
>>> len(ls)
0
tuple
>>> students = ('zhangsan', 'lisi', 'wangwu')
>>> students
('zhangsan', 'lisi', 'wangwu')
製造一個空的tuple
>>> t = ()
>>> t
()
- 小技巧
將tuple變成“可變”元組
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
相信大家都看懂了,變的不是tuple而是list,所以tuple本質上還是不可變的
剩下的,下次吧……