前言:什麼是資料結構
通過某種方式組織在一起的資料元素的集合
python中最基本的資料結構是序列,序列中每乙個資料元素被分配乙個位置,該位置稱為索引。第乙個索引是0.
python有6中內建序列,分別為擴列表,元組,字串,unicode字串,buffer物件和xrange物件
列表可修改,元組不行
通用序列操作
索引、分片,加、乘 、迭代、以及檢查摸個元素是否屬於序列的成員
除此之外還有計算序列長度、找出最大最大元素和最小元素的內構函式
索引》freeting='hello'
>>>freeting[0] #直接"hello"[0]也可
h ##用負數索引時,從序列最後乙個元素開始計數,-1為最後乙個元素編號
分片用來訪問一定範圍的元素
>>> "hello"[1:4]
'ell' #不包含第四個元素
如果分片所得部分包括序列結尾的元素,只需要置空最後乙個索引即可
number=[1,2,3,4,5,6,7,8,9,10]
>>>number[-3:]
[8,9,10]
>>>number[:3]
[1,2,3]
步長:number[0:10:2]
[1,3,5,7,9] #步長可為負數,此時從右到左提取元素
列表和字串無法連線在一起
>>> "python"*5
'pythonpythonpythonpythonpython'
>>> [42]*5
[42, 42, 42, 42, 42]
初始化乙個長度為10的空列表
number=[none]*10
成員資格
檢查乙個值是否在序列中,用in運算子
>>> number="qwe"
>>> 'q' in number
true
>>> user=["mlh","qwe","asd"]
>>> raw_input() in user
mlhtrue
>>> database=['qwe']
>>> 'qwe' in database
true #當引號也可以
使用者密碼匹配
database=[
['qwe','123'],
['asd','456'],
['zxc','789'],
]user=raw_input("please input your user name:")
pin=raw_input ("please input your pin: ")
if [user,pin] in database : print("ok") ###########密碼也是字串,別寫成數字
len函式返回序列的元素數量,min函式返回最小元素,max則是最大元素
2.3 列表
列表不同於字串和元組的地方在於列表是可變的
刪除列表元素
>>> name=['qwe','asd','zxc']
>>> del name[1]
>>> name
['qwe', 'zxc']
分片賦值
>>> name=list('qweasd')
>>> name
['q', 'w', 'e', 'a', 's', 'd']
>>> name[3: ]=list('zxc')
>>> name
['q', 'w', 'e', 'z', 'x', 'c']
>>> name[3:]=list('vbnmfghj')
>>> name
['q', 'w', 'e', 'v', 'b', 'n', 'm', 'f', 'g', 'h', 'j'] #####實際上這樣寫就插入了一段序列
方法:與某些物件有緊密聯絡的函式
物件.方法(引數)
>>> lst=[1,2,3]
count統計某個元素在列表**現的次數
x.count(1)
extend 在原有的列表中新增新列表
>>> a=[1,2,3,4]
>>> b=[5,6,7,8]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
若用a+b則是生成乙個全新的序列
若用a=a+b,則連線的效率會比extend低
index方法用於從列表中找出某個值第一匹配項的索引位置
>>>x.index('qwe')
insert將物件插入列表
>>> number=[1,2,3,4,5,6]
>>> number.insert(3,9)
>>> number
[1, 2, 3, 9, 4, 5, 6]
pop移除列表中的乙個元素並返回該值(眾多方法中唯一返回元素值)
remove移除列表中第一匹配項,無返回值
reverse將列表中的元素反向存放,改變了列表但不返回值
sort對原列表進行一定順序的排序,但如果要保留原列表,又要排序出新列表,則要用如下方法
>>> x=[3,1,5,2,6,]
>>> y=x[:]
>>> y.sort()
>>> x
[3, 1, 5, 2, 6]
>>> y
[1, 2, 3, 5, 6]
不能簡單的把值賦給y,這樣只會指向同樣的位址
y=x.sort()是錯的
y=x也是錯的
另一種簡單點的方法就是用sorted
>>> x=[5,3,2,7,9,4]
>>> y=sorted(x)
>>> x
[5, 3, 2, 7, 9, 4]
>>> y
[2, 3, 4, 5, 7, 9]
高階排序,用特定的規律排序(給sort提供引數)
number=[2,1,7,5,6]
number.sort(cmp)和預設方式相同
number.sort(key=len)按物件的大小排序
number.sort(resverve=ture)來決定是否進行反向排序
2.4 元組
元組不可變,與數值的區別在於後邊多加了乙個逗號
>>> 3*(40+2)
126>>> 3*(40+2,)
(42, 42, 42)
tuple函式與list一樣,只是轉化成元組
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('qwe')
('q', 'w', 'e')
元組不可替代的因素是
1.元組可以對映(和集合的成員)中當做鍵使用,列表不行
2.元組作為很多內建函式和方法的返回值的存在,也就是說你必須對元組進行處理。(看不懂這句話)
總結:本章主要講的東西有
1.序列
2.成員資格(用in操作符檢查乙個值是否存在於序列當中)
3.方法(一些內建型別(例如列表和字串,元組不在其中)有很多可用的方法)
第二章 機器學習基礎
資料 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img wmztjylh 1604898572231 mgs 1.png 特徵空間 feature space 分類任務本質就是在特徵空間切分 在高維空間同理 特徵可以很抽象 分類 多標籤分類 回歸 監督 學習 非監督學習 輔助監督學...
python第二章學習筆記
from math import print pi print e 3.141592653589793 2.718281828459045 print id 11 print id python print type 12 print type 1.2 140733182862288 2498184...
Linux學習 基礎篇 第二章
open成功後,讀寫檔案 ssize t read int fd,void buf,size t count fd表示檔案描述符,由open開啟得到 buf表示裝載讀出的資料的緩衝區位址 count表示緩衝區大小 返回值是整數,表示讀出的位元組數 ssize t write int fd,const...