天天堅持 一天一篇 點個訂閱吧 灰常感謝 當個死粉也闊以python
week summer:git
Python人工智能從入門到精通算法
字符串 str # 不可變序列,只能存字符
列表 list # 可變的序列,能夠存任意數據
元組 tuple # 不可變序列,能夠存任意數據
字典dict # 可變無序,能夠存任意數據
集合set #可變無序,只能存不可變數據
(可變就是id不變的狀況下改變數據)數組
序列相關函數: len(x), max(x), min(x), sum(x), any(x), all(x)
序列有5種:
star 字符串
list 列表
tuple 元組
bytes
bytearray app
列表 list:
L = [ ]
L = list() 建立函數 括號內放可迭代對象、能夠空
L [ ] 括號內放下標
L [:: ] 第一個參數開始位置,第二個結束、第三個步長(步長決定方向)
列表推導式: [表達式 for 變量 in 可迭代對象](能夠嵌套)
del L[ ] 刪除指定下表索引
列表能夠索引下標 、切片 能夠增、刪、改、查
能夠索引賦值、切片賦值(不是順序切片時賦值必定要個數相等)函數
潛拷貝
淺拷貝是指在複製過程當中,只複製一層變量,不會複製深層變量綁定的對象的複製過程測試
深拷貝
深拷貝一般只對可變對象進行復制,不可變對象一般不會複製ui
元組 type人工智能
t = (1, ) 低於連個元素必須用, 號
t = type(x) 同列表同樣
元組能夠索引和切片和列表同樣 可是可是不能賦值
T.index(v[, begin[, end]]) 返回對應元素的索引下標
T.count(x) 返回元組中對應的元素個數
字典 dict:
d = { }
d = {「a」:1} 鍵值對形式存在
d[ ] 括號裏放鍵 ,字典索引只索引鍵(key)
索引賦值 : 只能修改值 ,存在修改 否者添加
dict() 生成一個字的字典 等同於 {}
dict(iterable) 用可迭代對象初始化一個字典
dict(**kwargs) 用關鍵字傳參形式建立一個字典
字典的鍵(key) 必須爲不可變類型 且不能重複
不可變類型:bool, int, float, complex, str, tuple, frozenset, bytes(後面再講)
in 在什麼什麼裏面 not in 不在什麼什麼裏面(判斷鍵存在:只判斷鍵)
is 是 is not 不是
全部可迭代對象均可以用for 遍歷 (字典只訪問鍵)
字典推導式 : d = {x : x ** 2 for x in range(10)}
{鍵表達式 : 值表達式 for 變量 in 可迭代對象 if 真值表達式}(可嵌套)spa
字典 VS 列表
1. 都是可變對象
2. 索引方式不一樣,列表用整數索引,字典用鍵索引
3. 字典的插入,刪除,修改數據的速度可能會快於列表(重要)
4. 列表的存儲是有序的,字典的存儲是無序的
可變的數據類型有四種:
list 列表、dict 字典
set 集合、bytearray 字節數組
集合 set:
s = set( )
s = set( ) 構造函數
數據不可重複 至關於只有鍵的字典
集合運算:
& 生成兩個集合的交集
| 生成兩個集合的並集
- 生成兩個集合的補集
^ 生成兩個集合的對稱補集
> 判斷一個集合是另外一個集合的超集
< 判斷一個集合是另外一個集合的子集 (包含關係)
== != 集合相同/不一樣 (與順序無關)
集合推導式:{表達式 for 變量 in 可迭代對象 [if 真值表達式]}(可嵌套)
固定集合 frozenset:
固定集合是不可變的,無序的, 含有惟一元素的集合
(能夠作字典鍵也能夠作集合的值)
frozenset()
f = frozenset() 括號內放可迭代對象
至關於集合的所有方法(包括運算符)去掉修改集合的方法
經常使用字符串方法
方法 說明
S.isdigit() 判斷字符串中的字符是否全爲數字
S.isalpha() 判斷字符串是否全爲英文字母
S.islower() 判斷字符串全部字符是否全爲小寫英文字母
S.isupper() 判斷字符串全部字符是否全爲大寫英文字母
S.isspace() 判斷字符串是否全爲空白字符
S.center(width[,fill]) 將原字符串居中,左右默認填充空格 width:所居中字符串的長度 fill:默認填充空格
S.count(sub[, start[,end]]) 獲取一個字符串中子串的個數 sub:所要獲取的字符串 start:起始位置 end:結束位置
S.find(sub[, start[,end]]) 獲取字符串中子串sub的索引,失敗返回-1 start:起始位置 end:結束位置
S.strip() 返回去掉左右空白字符的字符串
S.lstrip() 返回去掉左側空白字符的字符串
S.rstrip() 返回去掉右側空白字符的字符串
S.upper() 生成將英文轉換爲大寫的字符串
S.lower() 生成將英文轉換爲小寫的字符串
S.replace(old, new[, count]) 將原字符串的old用new代替,生成一個新的字符串 count:更換的次數
S.startswith(prefix[, start[, end]]) 返回S是否是以prefix開頭,若是以prefix開頭返回True,不然返回False,
S.endswith(suffix[, start[, end]]) 返回S是否是以suffix結尾,若是以suffix結尾返回True,不然返回False
如下是不經常使用的
S.title() 生成每一個英文單詞的首字母大寫字符串
S.isnumeric() 判斷字符串是否全爲數字字符
文本解析:
S.split(sep=None) 拆分字符串 sep是拆分符號
S.join(iterable) S是分隔字符串 擴號內跟可迭代對象
列表的方法 :
L.index(v [, begin[, end]]) 返回對應元素的索引下標, begin爲開始索引,end爲結束索引,當 value 不存在時觸發ValueError錯誤
L.insert(index, obj) 將某個元素插放到列表中指定的位置
L.count(x) 返回列表中元素的個數
L.remove(x) 從列表中刪除第一次出如今列表中的值
L.copy() 複製此列表(只複製一層,不會複製深層對象)
L.append(x) 向列表中追加單個元素
L.extend(lst) 向列表追加另外一個列表
L.clear() 清空列表,等同於 L[:] = []
L.sort(reverse=False) 將列表中的元素進行排序,默認順序按值的小到大的順序排列
L.reverse() 列表的反轉,用來改變原列表的前後順序
L.pop([index]) 刪除索引對應的元素,若是不加索引,默認刪除最後元素,同時返回刪除元素的引用關係
字典的方法
D表明字典對象
D.clear() 清空字典
D.pop(key) 移除鍵,同時返回此鍵所對應的值
D.copy() 返回字典D的副本,只複製一層(淺拷貝)
D.update(D2) 將字典 D2 合併到D中,若是鍵相同,則此鍵的值取D2的值做爲新值
D.get(key, default) 返回鍵key所對應的值,若是沒有此鍵,則返回default
D.keys() 返回可迭代的 dict_keys 集合對象
D.values() 返回可迭代的 dict_values 值對象
D.items() 返回可迭代的 dict_items 對象
Python3 集合的方法:
方法 意義
S.add(e) 在集合中添加一個新的元素e;若是元素已經存在,則不添加
S.remove(e) 從集合中刪除一個元素,若是元素不存在於集合中,則會產生一個KeyError錯誤
S.discard(e) 從集合S中移除一個元素e,在元素e不存在時什麼都不作;
S.clear() 清空集合內的全部元素
S.copy() 將集合進行一次淺拷貝
S.pop() 從集合S中刪除一個隨機元素;若是此集合爲空,則引起KeyError異常
S.update(s2) 用 S與s2獲得的全集更新變量S
S.difference(s2) 用S - s2 運算,返回存在於在S中,但不在s2中的全部元素的集合
S.difference_update(s2) 等同於 S = S - s2
S.intersection(s2) 等同於 S & s2
S.intersection_update(s2) 等同於S = S & s2
S.isdisjoint(s2) 若是S與s2交集爲空返回True,非空則返回False
S.issubset(s2) 若是S與s2交集爲非空返回True,空則返回False
S.issuperset(...) 若是S爲s2的子集返回True,不然返回False
S.symmetric_difference(s2) 返回對稱補集,等同於 S ^ s2
S.symmetric_difference_update(s2) 用 S 與 s2 的對稱補集更新 S
S.union(s2) 生成 S 與 s2的全集
Python運算符優先級
運算符 描述
(), [], {key: value}, {} 元組表達式、列表表達式、字典表達式、集合表達式
x[index], x[index:index],
x(arguments...), x.attribute 索引,切片,函數調用,屬性引用
** 指數 (最高優先級)
~, +, - 按位翻轉, 正號,負號
*, /, %, // 乘,除,取模和地板除
+, - 加法, 減法
>>, << 右移, 左移運算符
& 位與(AND)
^ 位異或(XOR)
| 位或(OR)
<=, <, >, >=, ==, !=,
is, is not, in, not in 比較,身份測試,成員資格測試
not 布爾非
and 布爾與
or 布爾或
if - else 條件表達式
lambda lambda表達式
數據類型:
數值類型:
int, float, complex, bool
容器:
不可變的容器
str, tuple, frozenset, bytes(字節串)
可變的容器
list, dict, set, bytearray(字節數組)
值:
None, False, True
運算符
算術運算符
+ - * / // % **
比較運算符:
< <= > >= == !=
in / not in
is, is not
布爾運算:
not, and, or
+(正號) -(負號)
& | ^
[] (索引,切片,鍵索引)
表達式:
1
1 + 2
max(1,2,3) # 函數調用是表達式
x if x > y else y, 條件表達式
三種推導式:
列表,字典,集合推導式(三種)
語句:
表達式語句:
全部的表達式均可以單獨寫在一行,造成一個語句,例:
print("hello world")
1 + 2
賦值語句:
a = 100
a = b = c = 100
x, y = 100, 200
a[0] = 100
dict['name'] = 'tarena'
del 語句
if 語句
while 語句
for 語句
break 語句
continue語句
pass 語句
內建函數:
len(x), max(x), min(x), sum(x), any(x), all(x)
構造函數(用來建立同類型的數據對象)
bool(x), int(x), float(x), complex(x),
list(x), tuple(x), str(x), dict(x), set(x),
frozenset(x)
abs(x)
round(x)
pow(x, y, z=None)
bin(x), oct(x), hex(x)
chr(x), ord(x)
range(start, stop, step)
input(x), print(x)
>>> help(__builtins__)
函數:
就是把語句塊封裝起來 造成一個語句塊 利用函數變量直接調用語句塊的方式
用戶自定義級別的函數是爲了提升代碼的可用性 重用性 以及邏輯清晰 維護方便
(def 函數名(形參列表):冒號)
形參列表能夠爲空 函數是一個空間,空間內變量不重複就不會衝突
函數調用:
函數名(實參)
return語句 用於返回非None對象語句
函數的參數傳遞:
傳參方式:(2種)
位置傳參(包含關係 )
序列傳參
關鍵字傳參(包含關係)
字典關鍵字傳參
位置傳參:
實參與形參的位置要對應
序列傳參:
用 * 將序列拆解 而後位置傳參
關鍵字傳參
將字典用「**」拆解後 實參和形參必須按形參名複製
拆解後鍵名要在形參中存在必須一致
鍵名必須是字符串且標識符
綜合傳參:
在能肯定形參能惟一匹配到相應實參的狀況下 全部傳參方式能夠任意組合
位置傳參(序列傳參)必定要在關鍵字傳參(字典關鍵字傳參)的左側
函數的缺省參數:
缺省參數必須從右至左依次存在的
命名關鍵字形參:
語法:
def 函數名(*, 命名關鍵字形參):
語句塊
或
ef 函數名(*args, 命名關鍵字形參):
語句塊
(關鍵字形參 必須用關鍵字傳參)
做用:
收集多餘關鍵字傳參
雙星號字典傳參:
語法:
def 函數名(**字典形參名):
語句塊
做用:
強制全部的參數都參數都必須用關鍵字傳參或字典關鍵字傳參
函數的參數說明:
位置形參、星號元組形參、命名關鍵字形參、雙星號字典形參能夠混合使用
函數自左到右的順序爲:
1.位置形參
2.星號元組形參
3.命名關鍵字形參
4.雙星號字典形參
全局變量:global variable:
函數外,模塊內的變量
全局變量全部函數均可以直接訪問
局部變量:local variable:
函數內的變量
調用時才被建立,在函數調用以後銷燬
傳參的排序規則:
從左到右 1.位置形參 2.星號元組形參 3.命名關鍵字形參 4.雙星號字典形參
函數:
globals()/locals()
globals()返回當前全局做用域內變量的字典
locals() 返回當前局部做用域內變量的字典
函數名是變量 建立時綁定函數
函數的變量名能夠序列交換算法
函數能夠做爲另外一個函數的實參
函數能夠做爲另外一個函數返回值
函數能夠嵌套
python的4個做用域:
做用域: 英文解釋 縮寫
局部做用域(函數內) Local(function) L
外部嵌套函數做用域 Enclosing functio loc E
函數定義所在模塊(文件)做用域 Global(module) G
python內建模塊做用域 Builtin(python) B
包含關係(內建>模塊>外部嵌套函數>函數內)
變量名查找規則:
訪問變量時,先查找本地變量,然後是包裹此函數外的函數內部的變量
,以後是全局變量,最後是內建變量
L ---> E ---> G ---> B
在默認狀況下,變量名賦值會建立或者改變當前做用域的變量
global語句:
聲明一個全局變量
nonlocal語句:
外部嵌套函數變量
調用不可修改外部嵌套函數做用域內的變量進行操做
lambda表達式: 建立一個匿名函數對象
lambda[ 參數1, 參數...]: 表達式
函數:
eval () / exec() 函數
eval(srouce,globals=None, locals=None)
把一個字符串srouce
當成一個表達式來執行,返回表達式結果
eval(source, globals=None, local=None) 把一個字符串 srouce 當成一個表達式來執行,返回表達式執行的結果
exec(source, globals=None, locals=None) 把一個字符串source 當成程序來執行
所有劃重點 加粗 加長 加大
溜了 不吹NB了....