容器數據類型特性總結
- 列表、元素和字典字面量,可以在不使用續行符的情況下,寫在多行上,最後一個元素後可加逗號,但空元素後不能有逗號
- 所有對象都有引用計數
- 指定新名稱或放入新容器中時,會導致引用計數增加,當引用計數爲0時,垃圾回收器會回收該對象
- 使用del()刪除對象的引用時,會減少對象的引用計數
- 使用sys模塊的sys.getrefcount()方法可查看引用計數
- 列表和字典都支持兩種類型的複製操作:淺複製和深複製
- 淺複製會創建一個新對象,對象中存儲的是指向原對象的引用,原對象改變,新對象也改變,如l2 = l1
- 深複製會創建一個新對象,並遞歸複製原對象中每個元素,原對象改變,新對象不變
- 深複製可使用copy模塊中的deepcopy()實現
- Python中的所有對象都是“第一類”,這意味着使用標識符命名的所有對象都有相同狀態,於是,能夠命名的所有對象都可以直接當數據進行處理
- 所有序列都支持迭代
- 所有序列都支持的操作和方法:
s[i]
s[i:j]
s[i:j:stride]
len(s)
min(s)
max(s)
sum(s)
all(s)
any(s)
s1 + s2 : 連接
s1 * N : 重複
obj in s1 :成員關係判斷
obj not in s1 - 可變序列的操作:
元素賦值
—–s1[index] = value
切片賦值
—–s1[i:j] = t
刪除指定元素
—–del s1[index]
刪除切片
—–del s1[i:j]
刪除擴展切片
—–del s1[i:j:stride]
Python的表達式和語句
表達式 :
1個或多個操作數,0個或多個操作符組成的序列
語句 :
- 變量聲明語句
- 賦值語句
- 調用語句
- 控制語句
- 循環
- 條件判斷
Python中的常用的表達式操作符 :
算術運算
x + y , x - y
x * y , x / y , x // y , x % y
邏輯運算
x or y
x and y
not x
成員關係運算
x in y
x not in y
對象實例測試
x is y
x not is y
比較運算
x < y
x > y
x <= y
x >= y
x == y
x != y
按位運算
x | y
x & y
x ^ y
x << y
x >> y
一元運算
-x
+x
~x
冪運算
x ** y
索引和分片
x[i]
x[i:j]
x[i:j:stride]
調用
x(...)
取屬性
x.attribute
元組: (...)
序列: [...]
字典: {...}
三元選擇表達式
x if y else z
匿名函數
lambda args: expression
生成器函數發送協議
yield x
運算優先級 :
(...),[...],{...}
s[i],s[i:j]
s.attribute
s(...)
+x , -x , ~x
x ** y
* , / , // , %
+ , -
<< , >>
&
^
|
< , <= , > , >= , == , !=
is , not is
in , not in
not
and
or
lambda
常用語句 :
賦值語句
調用語句
print:打印對象
if/elif/else : 條件判斷
for/else: 序列迭代
while/else : 普通循環
pass: 佔位符
break
continue
def
return
yield
global : 命名空間
raise : 觸發異常
import : 模塊導入
from : 模塊屬性訪問
class : 類
try/except/finally : 捕捉異常
del : 刪除引用
assert : 調試檢查
with/as : 環境管理器
賦值語句 :
變量名引用前必須先賦值
隱性賦值:
import, from, def, class, for, 函數參數
元組和列表支持分解賦值:
當賦值符號(=)的左側爲元組或列表時,Python會按照位置把右邊的對象和左邊的目標自左而右逐一進行配對
個數不同時,會觸發異常,此時可以切片的方式進行
多重目標賦值:
num1 = num2 = num3 = 44
增強賦值:
+=, -=, *=, /=, //=, %=
增強賦值執行效率很高,建議使用