1. 程式人生 > >我的Python學習之旅(02)

我的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本質上還是不可變的

剩下的,下次吧……