天天看點

Python基礎知識梳理 - 第02部分

本文是Python基礎知識的第二篇, 主要是對内置對象類型的介紹, 涉及的類型如下表.

數字類型

在Python中, 數字并不是一個真正的對象類型, 而是一組類似類型的分類, 如整數和浮點數, 複數等. Python還提供了若幹處理數字對象的工具, 如内置數學函數pow, abs等, 标準庫math, random等.

看下數字的簡單使用.

In [15]: 123 + 234

Out[15]: 357

In [16]: 1.5 * 4

Out[16]: 6.0

In [32]: pow(2, 10)

Out[32]: 1024

In [36]: import math

In [37]: math.pi

Out[37]: 3.141592653589793

In [38]: math.sqrt(44)

Out[38]: 6.6332495807108

In [39]: import random

In [40]: random.random()

Out[40]: 0.7181549555607203

In [41]: random.randint(1, 44)

Out[41]: 36

字元串類型

其為有序的字元的集合, 不能原地修改(不可變序列).

建立字元串常量

單引号

In [42]: 'spa"m'

Out[42]: 'spa"m'

雙引号

In [43]: "spa'm"

Out[43]: "spa'm"

三引号

In [44]: '''...spam...'''

Out[44]: '...spam...'

In [45]: """...spam..."""

Out[45]: '...spam...'

字元串的基本操作 - 擷取長度, 索引和分片

In [46]: S = 'spam'

In [76]: len(S)

Out[76]: 4

In [47]: S[0]

Out[47]: 's'

In [48]: S[-1]

Out[48]: 'm'

In [49]: S[1:3]

Out[49]: 'pa'

In [50]: S[:]

Out[50]: 'spam'

In [51]: S[:-1]

Out[51]: 'spa

字元串的方法 - 方法是和特定對象相關聯在一起的函數, 使用如S.upper(), 從對象角度看, 其為對象的屬性, 而該屬性是可調用的函數. 那如何檢視對象有哪些屬性, 及方法的作用呢, 可通過内置的dir, help函數.

In [68]: dir(S)

Out[68]:

['__add__',

 '__class__',

 'rstrip',

 'split',

In [70]: help(S.split)

Help on built-in function split:

split(...)

    S.split([sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string S, using sep as the

    delimiter string.  If maxsplit is given, at most maxsplit

    splits are done. If sep is not specified or is None, any

    whitespace string is a separator and empty strings are removed

    from the result.

(END)

清單類型

其為任意類型對象的有序集合, 大小可變, 可嵌套(可變序列).

建立清單

In [72]: L = []

In [73]: L = [1, 2, 3, 4]

In [74]: L = ['abc', ['def', 'ghi']]

清單的基本操作 - 擷取長度, 索引, 分片和原處修改

In [77]: L = ['spam', 'Spam', 'SPAM!']

In [78]: len(L)

Out[78]: 3

In [79]: L[1]

Out[79]: 'Spam'

In [80]: L[0:2]

Out[80]: ['spam', 'Spam']

In [81]: L[0:2] = ['eat', 'more']

In [82]: L

Out[82]: ['eat', 'more', 'SPAM!']

清單的方法, 檢視思路同上, 此處略.

字典類型

其為通過鍵來讀取的一系列鍵值對, 也叫關聯數組或散清單, 任意類型對象的無序集合, 大小可變, 可嵌套(可變映射).

建立字典

In [84]: D = {}

In [85]: D = {'spam': 2, "eggs": 3}

In [86]: D = dict(name='Bob', age=42)

字典的基本操作 - 擷取長度, 通路某項和原處修改

In [92]: D = {'spam': 2, "ham": 1, "eggs": 3}

In [93]: len(D)

Out[93]: 3

In [94]: D['spam']

Out[94]: 2

In [95]: D['spam'] = 4

In [96]: del D['eggs']

In [97]: D

Out[97]: {'ham': 1, 'spam': 4}

字典的方法, 略.

元組類型

其為任意類型對象的有序集合, 大小不可變(不可變序列).

建立元組

In [98]: T = ()

In [99]: T = (4,)

In [100]: T = ('a', 'b', 'c')

In [102]: T = 'a', 'b', 'c'

元組的基本操作 - 擷取長度, 索引和分片

In [104]: T = ('a', 'b', 'c', 'd')

In [106]: len(T)

Out[106]: 4

In [107]: T[2]

Out[107]: 'c'

In [108]: T[1:3]

Out[108]: ('b', 'c')

元組的方法, 略.

集合類型

其為唯一的, 不可變對象的無序集合; 一個項在集合中隻能出現一次, 不管将它添加多少次, 這些對象支援與數學集合理論相對應的操作.  

建立集合

In [110]: set('spam')

Out[110]: {'a', 'm', 'p', 's'}

In [123]: {'a', 'm', 'p', 's', 'a'}

Out[123]: {'a', 'm', 'p', 's'}

集合的基本操作 - 擷取長度, 交集, 并集和差集

In [116]: S1 = {1, 2, 3, 4}

In [117]: S2 = {3, 4, 5}

In [118]: len(S1)

Out[118]: 4

In [119]: S1 & S2

Out[119]: {3, 4}

In [122]: S1 | S2

Out[122]: {1, 2, 3, 4, 5}

In [121]: S1 - S2

Out[121]: {1, 2}

集合的方法, 略.  

對于檔案等其它類型對象, 這裡暫且不說明了, 随着學習的深入, 慢慢會接觸到.

通過上述總結, 可看到Python中提供了像dir()或len()這樣的内置函數, 也有像S.upper()或D.keys()這樣的方法調用, 那麼兩者間有什麼差別呢...

對于多種類型的通用型操作, 都是以内置函數或表達式的方式提供的(如len(S), S[0]); 對于特定類型的操作, 都是以方法調用的形式提供的(如S.upper()). 

類型對象分類

根據通路方式分類

1. 數字 - 支援加法和乘法

2. 序列(字元串, 清單, 元組) - 支援索引和分片

3. 映射 - 通過鍵值通路

根據可變性分類

1. 不可變(數字, 字元串, 元組) - 不支援原處修改

2. 可變(清單, 字典, 集合) - 支援原處修改