標籤:Python基礎知識 核心資料類型
本文是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. 可變(列表, 字典, 集合) - 支援原處修改
若感興趣可關注訂閱號”資料庫最佳實務”(DBBestPractice).
Python基礎知識梳理 - 第02部分