Python知識點整理(詳細)
- 輸出函數
- print()
可以向屏幕打印內容,或者在打開指定文件后,向文件中輸入內容
- print()
- 輸入函數
- input([prompt])
[prompt] 為輸入的提示字符。該函數返回在屏幕中輸入的內容
- input([prompt])
- 變量
- 變量的定義
變量由 標識、類型、值 三部分組成a = “test”a :即為變量 test:為值可以通過 id(a) 來獲取變量的標識(唯一) type(a)獲取變量類型
- 變量的定義
- 數據類型
- 整數類型
可以表示正數、負數和零整數的不同進制表示方式十進制 --> 默認的進制 如 18二進制 -->以 0b開頭八進制 -->以0o開頭十六進制 -->以0x開頭 - 浮點數類型
浮點數由整數部分和小數部分組成使用浮點數進行計算時,可能會出現小數位數不確定的情況,通過導入模塊 decimal 使用 Decimal() 函數解決。 例如 Decimal(‘1.1’) + Decimal(‘2.2’) #3.3 可以精確到小數點后一位 - 布爾類型
用來表示真或假的值True表示真,false表示假布爾值可以轉換成整數True -- 1 false -- 0 - 字符串類型
字符串又被稱為不可變的字符序列可以使用 單引號、雙引號、三引號來定義單引號和雙引號定義的字符串必須在一行三引號定義的字符串可以分布在連續的多行
- 整數類型
- 數據類型轉換
- 轉換成 str()類型
使用 引號 即可進行轉換或者使用 str() - 轉換成 int()類型
1、文字類和小數類字符串無法轉換成整數2、浮點數轉換成整數,抹零取整使用 int () - 轉換成 float()類型
1、文字類無法轉換成整數2、整數轉換成浮點數,末尾為 .0使用 float ()
- 轉換成 str()類型
- 注釋
- 單行注釋
以 # 開頭,直到換行結束 - 多行注釋
將一對三引號之間的代碼,成為多行注釋 - 中文編碼聲明注釋
在文件開頭加上中文聲明注釋,用以指定源碼文件的編碼格式
- 單行注釋
- 運算符
- 算術運算符
- 標准運算符
加 + 減 - 乘 * 除 /其中 11/2 = 5.5 是除法運算 11//2 = 5是整除運算 一正一負時,向下取整 - 取余運算符
%余數 = 被除數 - 除數*商 #注意一正一負的情況 - 冪運算符
**a = 2**3 # 8 2的3次方=8
- 標准運算符
- 賦值運算符
執行順序: 右→左支持鏈式賦值: a=b=c=20支持參數賦值:+=、-=、*=、....支持系列解包賦值:a,b,c = 20,30,40; - 比較運算符
>、 <、 >=、 <=、 !=== 對象 value的比較 (值比較)is、is not 對象的 id 比較 - 布爾運算符
and、or、not、in、not in - 位運算符
位與 & :對應數位都是 1,結果數位才是 1 ,否則為 0 位或 !:對應數位都是 0 ,結果數才是 0 ,否則為 1左移位運算符 << :高位溢出舍棄,低位補 0右移位運算符 >> :低位溢出舍棄,高位補 0 - 運算符優先級
算術 > 位 > 比較 > 布爾 > 賦值
- 算術運算符
- 對象的布爾值
Python 一切皆對象,所有對象都有一個 布爾值獲取對象的布爾值: bool()以下對象的布爾值為 falseFalse數值()None空字符串空列表空元組空字典空集合 - 選擇結構
- 單分支結構
- 中文語義
如果 .. 就... - 語法結構
if 條件表達式: 條件執行體
- 中文語義
- 雙分支結構
- 中文語義
如果 .. 就.. 不是...就... - 語法結構
if 條件表達式: 條件執行體1else: 條件執行體2
- 中文語義
- 多分支結構
- 中文語義
如果不是 .. 就..不是..就..不是..就..不是..就..不是..就..是.. 就.. - 語法結構
if 條件表達式1: 條件執行體1elif 條件表達式2: 條件執行體2elif 條件表達式N: 條件執行體N[else:] 條件執行體 N+1
- 中文語義
- 嵌套if
- 語法結構
if 條件表達式1: if 內層條件表達式: 內層條件執行體1 else : 內層條件執行體2else : 條件執行體
- 語法結構
- 單分支結構
- 條件表達式
- 中文語義
條件表達式是 if....else 的簡寫 - 語法結構
x if 判斷條件 else y - 運算規則
如果判斷條件的布爾值為True,條件表達式的返回值為 x,否則返回 y
- 中文語義
- pass語句
- pass語句什么都不做,只是一個占位符,用在語法上需要語句的地方
- 先搭建語法結構,還沒想好代碼怎么寫的時候使用
- 與以下語句一起使用
if 語句的條件執行體for-in 語句的循環體定義函數時的函數體
- 內置函數 range()
- 用於生成一個整數序列
- 創建 range 對象三種方式
- range(stop)
創建一個 [0,stop)之間的整數序列,步長為 1 - range(start,stop)
創建一個 [start,stop)之間的整數序列,步長為 1 - range(start,stop,step)
創建一個 [start,stop)之間的整數序列,步長為 step
- range(stop)
- 返回值是一個迭代器對象
- range 類型的優點
- in與not in 判斷整數序列中是否存在(不存在)指定的整數
- 循環結構
- 反復做同一件事情的情況,稱為循環
- 循環的分類
- while
- for - in
- 中文語義
in 表達從(字符串、序列等)中以此取值,又稱遍歷for - in 遍歷的對象必須是可迭代對象 - 語法結構
for 自定義的變量 in 可迭代對象 循環體 - 循環體內不需要訪問自定義變量,可以將自定義變量代替為下划線
- 中文語義
- 語法結構
while 條件表達式: 條件執行體(循環體) - 選擇結構的 if 與循環結構的 while 的區別
1、if 是判斷一次,條件為 True 執行一行2、while 是判斷 N+1次,條件為 True 執行 N次 - 流程控制語句
- break語句
用於結束循環結構,通常與分支結構 if 一起使用 - continue
用於結束當前循環,進入下一次循環,通常與分支結構中的if 一起使用
- break語句
- 與else語句配合使用的三種情況:
- if ... else ...
if 條件表達式不成立時執行 else - while ... else ...
沒有碰到 break 時執行else - for .... else ....
沒有碰到 break 時執行else
- if ... else ...
- 嵌套循環
循環結構中又嵌套了另外的完整的循環結構其中內層循環作為外層循環的循環體執行
- 列表
- 列表的創建
- 使用 中括號 [] 創建
列表元素用 逗號 進行分割lst = ['hello','python',111] - 使用內置函數 list()創建
lst = list(['hello','python',111])
- 使用 中括號 [] 創建
- 列表的特點
- 列表元素按順序有序排列
- 索引映射唯一一個數據
- 列表可以存儲重復數據
- 任意數據類型混存
- 根據需要動態分配和回收內存
- 列表的查詢操作
- 獲取列表中指定元素的索引
- index()
1、例如查詢列表中存在N個相同元素,只返回相同元素中的第一個元素的索引2、如果查詢的元素在列表中不存在,則會拋出 ValueError 的異常3、還可以在指定的 start 和 stop 之間進行查找,含頭不含尾 - 獲取列表中的單個元素
- 獲取單個元素
1、正向索引從 0 到 N-1 例: lst[0]2、逆向索引從 -N 到 -1 例:lst[-N]3、指定索引不存在,拋出 IndexError 異常 - 獲取列表中的多個元素
- 語法格式
列表名 [start : stop : step]- 切片結果
原列表片段的拷貝 - 切片范圍
[start,stop) - step 默認為 1
簡寫為[start : stop] - step 為正數時
從 start 開始向后計算切片[ : stop : step] :切片的第一個元素默認是列表的第一個元素[start : : step] :切片的最后一個元素默認是列表的最后一個元素 - step 為負數時
從start 開始往前計算切片[ : stop : step] :切片的第一個元素默認是列表最后一個元素[start : : step] :切片的最后一個元素默認是列表的第一個元素 - 判斷指定元素在列表中是否存在
元素 in 列表名元素 not in 列表名 - 列表元素的遍歷
for 迭代變量 in 列表名: 操作
- 切片結果
- 語法格式
- 獲取單個元素
- index()
- 獲取列表中指定元素的索引
- 列表元素的增加操作
- append()
在列表的末尾添加一個元素 - extend()
在列表的末尾至少添加一個元素 - insert()
在列表的任意位置添加一個元素參數1:添加的位置參數2:添加的元素lst[1:] = 9 #在列表 lst的位置 1 后面添加數字元素 9 - 切片
在列表的任意位置添加至少一個元素參數1:添加的位置參數2:添加的元素lst[1:] = lst1 #在列表 lst的位置 1 后面添加列表 lst1的元素
- append()
- 列表元素的刪除操作
- remove()
1、一次刪除一個元素2、重復元素只刪除第一個3、元素不存在拋出 ValueError 異常例: remove(1) #刪除列表中第一個出現的 值為1 的元素,沒有就拋異常 - pop()
1、刪除一個指定索引位置上的元素2、指定索引不存在拋出 IndexError 異常3、不指定索引,刪除列表中的最后一個元素例:pop(1) #刪除列表中索引為 1 的元素 - clear()
清空列表 - del
刪除列表 - 切片
一次至少刪除一個元素,但將產生一個新的列表對象例:new_list = lst[1:3] #將列表中索引 1 之前和3(含3)之后刪除lst[1:3] = [] # 將索引1-3(不含3)賦值為空,即刪除
- remove()
- 列表元素的修改操作
- 為指定索引的元素賦予一個新值
lst[2] = 100 #將列表索引為 2 的元素的值修改為 100 - 為指定的切片賦予一個新值
lst[1:3] = [300,400,500,600] #在列表的1-3位置的值修改為[300,400,500,600]
- 為指定索引的元素賦予一個新值
- 列表元素的排序操作
- sort()
列表中的所有元素默認按照從小到大的順序進行排序,可以指定 reverse = True 進行降序排序不產生新的列表,排序改變原列表 - 內置函數 sorted()
可以指定 reverse = True ,進行降序排序,原列表不發生改變,產生新列表
- sort()
- 列表生成式
- 語法格式
[ i * i for i in range( 1,10)]i*i :表示列表元素的表達式i:自定義變量range(1,10):可迭代對象lst = [i for i rang(1,5)] # lst中包含的元素為 [1,2,3,4,5] - 注意事項
表示列表元素的表達式中通常包含自定義變量
- 語法格式
- 列表的創建
- 字典
Python 內置的數據結構之一,與列表一樣是一個可變序列以鍵值對的方式存儲數據,字典是一個無序的序列score = {'課程' : python , '姓名' : ‘張三’}score:字典名課程、姓名:鍵python、張三:值鍵 :值 元素1,元素2- 字典的創建
- 使用花括號{}
score = {'課程' :‘python’ , ‘李四’:99} - 使用內置函數 dict()
dict(name = ‘jack ’ ,age = 20)
- 使用花括號{}
- 字典中元素的獲取
- [] 中括號
score['name'] - get()方法
score.get(‘name’,99) # 獲取 key 為name 的值,如果不存在,返回 99 (指定的不存在時默認返回值),如果不指定不存在時返回的默認值 ,則返回 None - [] 取值與使用 get()取值的區別
[ ] 如果字典中不存在指定的 key ,拋出 keyError 異常get()方法取值,如果字典中不存在指定的key,並不會拋異常,而是返回None,可以通過參數設置默認的 value,以便指定 key 不存在時的返回
- [] 中括號
- key 的判斷
in :指定的key在字典中存在返回 True not in:指定的 key 不存在返回 True - 字典元素的刪除
del score['name'] #刪除值 為 name 的 - 字典元素的新增
scores ['name'] = 'python' # 新增 key 為name 值為 python 的元素 - 字典視圖的三個方法
- keys()
獲取字典中所有 keymykeys = scores.keys() - values()
獲取字典中所有 valuemykeys = scores.values() - items()
獲取字典中所有的 鍵值對mykeys = scores.items()
- keys()
- 字典元素的遍歷
for item in scores : print( item ) - 字典的特點
- 字典中的所有元素都是一個 key - value對,key 不允許重復,value 可以重復
- 字典中的元素是無序的
- 字典中的 key 必須是不可變對象
- 字典也可以根據需要動態的伸縮
- 字典會浪費較大的內存,是一種使用空間換時間的數據結構
- 字典生成式
- 使用內置函數 zip()
用於將可迭代的對象作為參數,將對象中對應的元素打包成一個元組,然后返回由這些元組組成的列表items = [‘Fruits’,‘Book’,‘Other’]prices = [90,23,56]d = {item : price for item,price in zip(items,prices)} #將以items中的元素為 key ,以prices 中的元素為 value 對應生成一個 字典
- 使用內置函數 zip()
- 字典的創建
- 元組
Python 內置的數據結構之一,是一個不可變序列- 元組的創建方式
- 直接小括號 ()
t = ('python',‘hello’) - 使用內置函數 tuple()
t = tuple(‘python’,‘hello’) - 只包含一個元組的元素需要使用逗號和小括號
t = (10,)
- 直接小括號 ()
- 元組的遍歷
元組是可迭代對象,所以可以使用 for ... in 進行遍歷
- 元組的創建方式
- 不可變序列與可變序列
- 不可變序列:字符串、元組
不可改變序列中的元素,一旦改變就產生新對象:沒有增刪改操作 - 可變序列:列表,字典
可以改變序列的元素:可以增刪改操作,對象地址不發生改變,即不產生新對象
- 不可變序列:字符串、元組
- 集合
是Python提供的內置數據結構與列表、字典一樣都屬於可變類型 的序列集合是沒有 value 的字典- 集合的創建
- 使用 花括號創建 {}
s = {2,3,4,5} #集合中的元素不允許重復 - 使用 內置函數set()創建
s = set([1,2,3,4,5]) #其中的 [1,2,3,4,5]可以是 元組、列表、字符串等類型
- 使用 花括號創建 {}
- 集合元素的判斷操作
innot in - 集合元素的新增操作
- add()
一次添加一個元素 - update()
至少添加一個元素
- add()
- 集合元素的刪除操作
- remove()
一次刪除一個指定元素,如果指定的元素不存在拋出 KeyError 異常 - discard()
一次刪除一個指定的元素,如果指定的元素不存在,不拋出異常 - pop()
一次只刪除一個任意的元素 - clear()
清空集合
- remove()
- 集合間的關系
- 倆個集合是否相等
可以使用運算符 == 或 != 進行判斷 - 一個集合是否是另一個集合的子集
可以調用方法 issubset 進行判斷B.issubset (A) #B是不是A的子集 - 一個集合是否是另一個集合的超集
可以調用方法 issuperset 進行判斷B.issuperset (A) #B是不是A的子超集 - 倆個集合是否沒有交集
可以調用方法 isdisjoint 進行判斷B.isdisjoint (A) #A B是否有交集
- 倆個集合是否相等
- 集合的生成式
{ i*i for i in range(1,10) }
- 集合的創建