python基礎二

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)

一個數異或於同一個數兩次,還是它本身(可用於變量交換值)

發佈了301 篇原創文章 · 獲贊 365 · 訪問量 159萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章