Python與AI
AI是什麼?
人工智能(Artificial Intelligence)縮寫爲AI。它是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。人工智能的定義是讓機器實現原來只有人類才能完成的任務,其核心是算法。
AI的四大分支
模式識別:是指對錶徵事物或者現象的各種形式(數值的文字的邏輯關係的等)信息進行處理分析,以及對事物或現象進行描述分析分類解釋的過程,例如汽車車牌號的辨識涉及到圖像處理分析等技術。
機器學習:研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,重新組織已有的知識結構不斷完善自身的性能,或者達到操作者的特定要求。
數據挖掘:知識庫的知識發現,通過算法搜索挖掘出有用的信息,應用於市場分析、科學探索、疾病預測 等。
智能算法:解決某類問題的一些特定模式算法;例如,我們最熟悉的最短路徑問題,以及工程預算問題等。
Python3 中六個標準的數據類型:
Number(數字),String(字符串),List(列表),Tuple(元組),Sets(集合),Dictionary(字典)
Number(數字):Python3 支持 int、float、bool、complex(複數)
在Python 3裏,只有一種整數類型 int,表示爲長整型,沒有 python2 中的 Long。整數 包含正整數和負整數,用int來表示。在這裏整數被允許具有無窮的精度(只要內存空間允許,它可以增長成任意位數的數字)。
浮點數(float)表示小數,帶一個小數點,加上一個科學計數標誌e或者E。例如:
在 Python2 中是沒有布爾型的,它用數字 0 表示 False,用 1 表示 True。到Python3 中,把 True 和 False 定義成關鍵字了,但它們的值還是 1 和 0,它們可以和數字相加。
Python的複數常量寫成實部+虛部的寫法,虛部是以j或J結尾的。例如:
Python中整數表現形式:十進制,二進制,八進制,十六進制
2進制是以0b開頭的: 例如: 0b11 則表示十進制的3
8進制是以0o開頭的: 例如: 0o11則表示十進制的9
16進制是以0x開頭的: 例如: 0x11則表示十進制的17
進制轉換:
轉爲二進制:bin()
轉爲八進制:oct()
轉爲十進制:int(“要轉換的數值”,要轉換的數的進制)
轉爲十六進制:hex()
十進制轉爲二進制:bin(10)
十進制轉爲八進制:oct(8)
十進制轉爲十六進制:hex(10)
二進制轉爲十進制:int("1001",2)
二進制轉爲八進制:oct(0b1010)
二進制轉爲十六進制:hex(0b1001)
八進制轉爲二進制:八進制先轉爲十進制,再轉爲二進制bin(int('17',8))
八進制轉爲十進制: int('17',8)
八進制轉爲十六進制:就是八進制先轉爲十進制,再轉爲十六進制hex(int('17',8))
十六進制轉爲二進制: bin(0xa)
十六進制轉爲十進制: int("ff", 16)
int('0xab', 16)
十六進制到八進制: oct(0xf)
字符串
字符串是單個字符的字符串的序列,其他類型的序列還包括列表和元祖
'''...''' , """..."""可以用來定義多行字符串
‘...’ , “...”只能用來定義單行字符串
""和''沒有區別,僅僅是爲了簡化轉義字符的使用。例如要輸出:’3’比’2’大轉義字符表示: '\'3\' 比 \'2\' 大’
簡化表示:"'3'比'2'大"
字符串格式化,求5+3的和,在屏幕上輸出:5+3=8
format問題:求5+3的和,在屏幕上輸出:5+3=8%"5+3={0}".format(5+3)
注:0相當於第1個佔位符,"5+3={0},5-3={1}".format(5+3,5-3)
"5+3=%i,5-3%i"%(5+3,5-3) 注:i是類型
推薦使用format,可以複用:"5+3={0},5-3={1}{0}".format(5+3,5-3)
len(字符串名):計算字符串的長度。
例:s = 'span'
print(len(s)) 輸出4
字符串名[索引]:得到索引位置的字符。
print(s[1]) 輸出 p
注意:索引從0開始
print(s[-1]) 輸出 n
注意:python中可以反向索引,從最後一個開始(-1),正向索引從左邊開始計算,反向索引從右邊開始計算
分片:從一個字符串中取出一部分的方法。格式:X[I:J]
含義:取出在X中從偏移量爲I,直到但不包含偏移量爲J的內容。
例:從字符串s = ”I love python”中提取字符串”love”:s[2:6]
注:分片的左邊界默認爲0,左邊界默認爲分片序列的長度
1.X[1:] 相當於X[1:len(X)]
2.X[:3] 相當於X[0:3]
3.X[:-1] 相當於X[0:-1] 結果爲去除掉最後一個字符
4.X[:] 相當於X[0:len(X)]
合併:作爲一個序列,字符串支持用+,+=進行拼接,或者用*進行重複
s = 'span’
s+'xyz’ 輸出:spanxyz
s += 'abc' 輸出:spanabc
s*3 輸出:spanspanspan
修改字符串的大小寫:title()
以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母都改爲大寫。
例:name = "jack love lily"
print(name.title()) 輸出
將字符串改爲全部大寫upper()或全部小寫lower():
name = "jack love lily"
print(name.upper())
print(name.lower())
輸出:
刪除空白
剔除字符串末尾的空白:rstrip()
剔除字符串開頭的空白:lstrip()
剔除字符串兩端的空白:strip()
name = " pythin "
print(name.rstrip())
print(name.lstrip())
print(name.strip())
字符串特點:不可變性——在創建後不能就地改變。注意: 在之前的例子中,沒有通過任何操作對原始的字符串進行改變,每個字符串都被定義爲生成新的字符串作爲其結果在覈心類型中,數字,字符串和元組是不可變的;列表和字典是可變的。
raw字符串表示原始字符串:你看到這個字符串是什麼就顯示什麼,所有字符都不進行轉義
寫法: 在字符串前面加r
作用: 抑制轉義
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。爲了避免這種情況,我們可以在字符串前面加個前綴r,表示這是一個 raw 字符串,裏面的字符就不需要轉義了。
例如:r'\(^_^)/ \(~_~)/’還可以將raw字符串和多行字符串結合起來使用:a = r'''\(^_^)/\(~_~)/’‘’
注意:raw字符串不能以單個“\”結尾
類型轉換
問題:"2"+3報錯,類型不一致隱式轉換:小範圍類型數據向大範圍類型數據轉換,自動完成。例如:3.2+33自動轉爲浮點型
顯示轉換:手動指定數據的類型例如:int(“2”)+3 將str類型的數據”2”轉爲int類型數據2,輸出:5
"2"+str(3) 將int類型的數據3轉爲str類型數據”3”,輸出:2
3int(3.2) 將float類型的數據轉爲int類型數據,輸出:3
查看數據類型:type(數據)
例如:print(type(3)),輸出
列表
列表是一個任意類型的對象的位置相關的有序集合,它沒有固定的大小。
定義格式:[元素一,元素二,...]
例如:定義列表students,存儲學員姓名:
students = ["張三","李四","王五"]
查詢元素
列表是有序集合,因此要訪問列表的任何元素,只需將該元素的位置或索引告訴Python 即可
例如,下面的代碼從列表 students 中提取第一個學員:
students = ["張三","李四","王五"]
print(students[0])
增加元素
1.在列表末尾添加元素:append()
例如,增加新學員展昭到students列表末尾:
students.append("展昭")
print(students)
2.在列表中插入元素:insert()
例如,增加新學員張龍到students列表第二個位置:
students.insert(1,"張龍")
print(students)
修改元素:要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。
例如,將students中的第二個學員改名爲包拯:
students[1] = "包拯"
print(students)
刪除元素
1.使用del語句刪除元素,條件是知道其索引。
例如,刪除students列表中的第二個元素:
del students[1]
print(students)
2.使用方法 pop()刪除元素 注:未指明索引時,默認刪除的是最後一個元素,返回值爲被刪除的元素。
例如,刪除students列表中的第一個元素:
students.pop()
print(students)
3.根據值刪除元素remove()。返回值爲被刪除的元素。
例:刪除students列表中的元素"包拯":
students.remove("包拯")
print(students)
組織列表:
1.使用方法sort()對列表進行永久性排序
例如: 讓列表中的元素按照字母順序排序:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
按與字母順序相反的順序排列列表元素,向 sort() 方法傳遞參數 reverse=True:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
2.使用函數sorted()對列表進行臨時排序。要保留列表元素原來的排列順序,同時以特定的順序呈現它們,可使用函數 sorted()。
例如:cars = ['bmw', 'audi', 'toyota', 'subaru’]
print(cars)
print(sorted(cars))
print(cars)
3.反轉列表元素: reverse()
例如:cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
4.獲取列表的長度:len()
例如:cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars))
元組
Python 的元組與列表類似,不同之處在於元組的元素不能修改。
定義格式:(元素一,元素二,...)
例如:定義列表numbers,存儲整數數據:numbers = (200, 50)
1.嘗試修改元組 numbers 中的一個元素,看看結果如何:
例如:numbers = (200, 50)numbers[0] = 1
由於試圖修改元組的操作是被禁止的,因此 Python 指出不能給元組的元素賦值。
2.修改元組變量雖然不能修改元組的元素,但可以給存儲元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個元組:
例如:
numbers = (200, 50)
print(numbers)
numbers = (1,2,3,4)
print(numbers)
由於試圖修改元組的操作是被禁止的,因此 Python 指出不能給元組的元素賦值
查詢元素:通過索引獲取對應的額元素
例如:
numbers = (200, 50)
print(numbers[0])
print(numbers[1])相比於列表,元組是更簡單的數據結構。如果需要存儲的一組值在程序的整個生命週期內都不變,可使用元組。
字典
在 Python 中,字典是一系列鍵值對。每個鍵都與一個值相關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字符串、列表乃至字典。事實上,可將任何 Python 對象用作字典中的值。
定義格式:在 Python 中,字典用放在花括號 {} 中的一系列鍵 — 值對錶示,alien_0 = {'color': 'green', 'points': 5}
訪問字典中的值:要獲取與鍵相關聯的值,可依次指定字典名和放在方括號內的鍵
例如:alien_0 = {'color': 'green'}
print(alien_0['color'])
添加鍵 — 值對:要添加鍵 — 值對,可依次指定字典名、用方括號括起的鍵和相關聯的值
例如:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
alien_0['x'] = 0
alien_0['y'] = 25
print(alien_0)
修改字典中的值:通過操作鍵來完成
alien_0 = {'color': 'green', 'points': 5}
alien_0['color'] = 'yellow'
print(alien_0)
刪除鍵 — 值對:可使用 del 語句將相應的鍵 — 值對徹底刪除。使用 del 語句時,必須指定字典名和要刪除的鍵。例如:alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
創建一個空字典:有時候,在空字典中添加鍵 — 值對是爲了方便,而有時候必須這樣做。爲此,可先使用一對空的花括號定義一個字典,再分行添加各個鍵 — 值對
例如:
alien_0 = {}
alien_0['color'] = 'green’
alien_0['points'] = 5
print(alien_0)
集合(set)
集合(set)是一個無序不重複元素的序列。它的主要作用如下:去重,把一個列表變成集合,就自動去重了關係測試,測試兩組數據之前的交集、差集、並集等關係
set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典。
創建格式:parame = {value01,value02,...}或者set(value)
例:student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student)
# 輸出集合,重複的元素被自動去掉
成員運算符in
如果在指定的序列中找到值返回 True,否則返回 False
例:# 成員測試
if('Rose' in student) :
print('Rose 在集合中')
else :
print('Rose 不在集合中')
例:a = set('abracadabra') b = set('alacazam')
print(a)
print(a - b) # a和b的差集
print(a | b) # a和b的並集
print(a & b) # a和b的交集
print(a ^ b) # a和b中不同時存在的元素
s = set([3,5,9,10]) #創建一個數值集合
t = set("Hello") #創建一個唯一字符的集合
t.add('x') # 添加一項
s.update([10,37,42]) # 在s中添加多項
t.remove('H')
len(s)
一個數異或於同一個數兩次,還是它本身(可用於變量交換值)