標籤:ble pen 計數器 地址 res with tar 資料 pop
Python內建資料結構
一、數值型
1.資料類型分類:
int:整數
python3的int就是長整型,且沒有大小限制,受限於記憶體地區的大小
int(x) 返回一個整數
float:浮點數
有整數部分和小數部分組成。支援十進位和科學計數法表示。只有雙精確度型。
float(x) 返回一個浮點數
complex:複數
有實數和虛數部分組成,實數和虛數部分都是浮點數,3+4.2J
complex(x)、complex(x,y) 返回一個複數
bool:布爾
int的子類,僅有2個執行個體True、False對應1和0,可以和整數直接運算
bool(x) 返回布爾值,bool值判斷邏輯一如前文所述,如:
bool(‘‘) --> False
bool(0) --> False
2.數文書處理函數:
(1)int()、floor()、ceil()、round()、// 區別:
int():
builtin內建函數
官方文檔描述:
class int(x=0)
class int(x, base=10)
Return an integer object constructed from a number or string x, or return 0 if no arguments are given. If x is a number, return x.int(). For floating point numbers, this truncates towards zero.
If x is not a number or if base is given, then x must be a string, bytes, or bytearray instance representing an integer literal in radix base. Optionally, the literal can be preceded by + or - (with no space in between) and surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with a to z (or A to Z) having values 10 to 35. The default base is 10. The allowed values are 0 and 2–36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O, or 0x/0X, as with integer literals in code. Base 0 means to interpret exactly as a code literal, so that the actual base is 2, 8, 10, or 16, and so that int(‘010‘, 0) is not legal, while int(‘010‘) is, as well as int(‘010‘, 8).
對於浮點數,截斷小數至零
即取整數部分
floor():
math模板
向下取整
ceil():
math模板
向上取整
round():
四捨六入五取偶
//:
整除並floor()
floored quotient of x and y
(2)數文書處理函數_2
min()min(iterable, [, key, default])min(arg1, arg2, args[, key])max()max(iterable, [, key, default])max(arg1, arg2, args[, key])pow(x,y)
功能與x**y相同
math.sqrt()
開方
bin()
傳回值為字串
oct()
傳回值為字串
hex()
傳回值為字串
math.pi
math.e
(3)類型判斷
type(obj)
傳回型別而不是字串
isinstance(obj, class_or_tuple)
返回布爾值
二、序列對象
資料類型分類:
1.str:字串
詳見:下章
2.list:列表
列表內元素有順序,可以使用索引
線性資料結構
列表是可變的
初始化
例:
lst=list()lst=[]lst=[1,2,‘a‘,[‘i‘,‘j‘]]lst=[range(5)]
不能一開始就定義大小,對比java
列表list、鏈表、queue、stack的差異
list線性儲存,查詢效率高O(1),插入、刪除效率低O(n)
鏈表散落在記憶體中,查詢效率低O(n),插入、刪除效率高O(1)
queue先進先出FIFO
棧後進先出LIFO
清單索引訪問
正索引:從左至右,從0開始,為列表中每一個元素編號
負索引:從右至左,從-1開始
列表查詢
index(value,[start,[stop]])
返回第一個匹配項的索引
只能從左向右遍曆
匹配不到返回ValueError異常
時間複雜度O(n),因需遍曆列表
count(value)
返回列表中匹配value的次數
時間複雜度O(n),因需遍曆列表
len()
時間複雜度O(1)
計數器在每次向list中插入、刪除時執行計數
因此調用len()時只打出計數器數值,不執行遍曆操作
列表增加、插入元素
append(object) -> None
在尾部追加,返回None
修改原有對象,不產生新對象
時間複雜度O(1)
insert(index, object) -> None
在指定索引插入元素,返回None
修改原有對象,不產生新對象
時間複雜度O(n),因為插入後可能會發生後續元素在記憶體中進行依次後移操作
若index超界不報錯:
超越上界,尾部追加
超越下界,頭部追加
extend(iteratable) -> None
將可迭代對象的元素追加進來,返回None
修改原有對象,不產生新對象
串連操作,將兩個列表串連起來
產生新的對象,原列表不變
本質上調用的是add()方法
重複操作,將本列表元素重複n次,返回新的列表
注意:
x=[[1,2,3]]y=x*3y[0][1]=200y
結果為:
[[1, 200, 3], [1, 200, 3], [1, 200, 3]]
y = [1]*5y[0] = 6y[1] = 7print(y)
結果為:
[6, 7, 1, 1, 1]
可暫時理解為:
*複製,對於複雜物件,複製的是引用,並非資料,複製的三個元素實際指向的是同一個記憶體位址
簡單對象不影響
列表刪除元素
remove(value) -> None
從左至右尋找第一個匹配value的值,移除該元素,返回None
修改原有對象,不產生新對象
時間複雜度O(n),因為插入後可能會發生後續元素在記憶體中進行依次後移操作(列表在記憶體中連續順序儲存)
pop([index]) -> item
不指定索引index,就從列表尾部彈出一個元素
指定索引index,就從索引處彈出一個元素,索引超界拋出IndexError錯誤
時間複雜度:
不指定索引為O(1)
指定索引為O(n),因為插入後可能會發生後續元素在記憶體中進行依次前移操作(列表在記憶體中連續順序儲存)
clear() -> None
清除列表所有元素,剩下一個空列表
列表其它操作
reverse() -> None
將列表元素反轉,返回None
修改原有對象,不產生新對象
sort(key=None, reverse=False) -> None
對列表元素進行排序,預設升序
修改原有對象,不產生新對象
reverse為True,反轉,降序
key一個函數,指定key如何排序
in
3.tuple:元組
詳見:下章
三、索引值對
資料類型分類:
set:集合
詳見:下章
dict:字典
詳見:下章
python內建資料結構