Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)詳解【數(shù)字、字符串、列表、元組、集合、字典】
本文實(shí)例講述了Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)。分享給大家供大家參考,具體如下:
前言
相比于PHP,Python同樣也是腳本解析語言,所以在使用Python的時(shí)候,變量和數(shù)據(jù)結(jié)構(gòu)相對于編譯語言來說都會(huì)簡單許多,但是Python相比于PHP來說,變量類型的定義會(huì)比較嚴(yán)格:string->int的轉(zhuǎn)換沒有PHP那么方便。但這也讓程序穩(wěn)定性有所提升,例如和客戶端交互的時(shí)候,數(shù)據(jù)庫取出來的數(shù)字int和緩存取出來的數(shù)字(默認(rèn)是string)需要手動(dòng)進(jìn)行轉(zhuǎn)換(否則會(huì)有報(bào)錯(cuò)提示),而PHP不需要手動(dòng)轉(zhuǎn)換的,返回值類型不對可能會(huì)使客戶端崩潰。所以本文也針對Python的數(shù)據(jù)結(jié)構(gòu)作一個(gè)基礎(chǔ)總結(jié),并在個(gè)別部分與PHP作比較。
一、數(shù)據(jù)結(jié)構(gòu)類型
Python包含的常規(guī)數(shù)據(jù)結(jié)構(gòu)類型有:數(shù)字、字符串、List(列表)、Tuple(元組)、Set(集合)、 Dictionary(字典)
二、數(shù)據(jù)結(jié)構(gòu)說明及其用法
1、常用數(shù)字類型:int(有符號整型) 、long(長整型[也可以代表八進(jìn)制和十六進(jìn)制]) 、float(浮點(diǎn)型) 、complex(復(fù)數(shù):a + bj形式)
2、字符串類型:與PHP、Java等字符串類型一致。
Python字符串常用操作有:
(1)拼接:加號(+)是字符串連接運(yùn)算符,如 str1 + str2;
(2)重復(fù):星號(*)是重復(fù)操作,如 str2 = str1 * 2,表示兩個(gè)str1字符串重復(fù)拼接;
(3)剪切:
①str[0,1]——截取從0開始的一位;
②str[:10]——截取0開始的10位;
③str[:-1]——截取0開始到倒數(shù)1位(不包括倒數(shù)1位);
(4)查詢:str.find(‘<待查詢字符串>')——返回查詢到的下標(biāo);
(5)替換:str.replace(‘<待替換字符串>',' <替換后的字符串>');
(6)分割:str.split(',')——根據(jù)','分隔成list;
(7)連接: ','.join(<list>)——把list連接成用','分隔的字符串;
(8)翻轉(zhuǎn):strrev(<str>);
(9)復(fù)制:strncpy(str1,str2,n)——n表示復(fù)制指定長度;
(10)大小寫轉(zhuǎn)換:str.upper()、str.lower();
(11)長度:len(str);
3、列表(List)類型:list用[ ]標(biāo)識,是一種有序的集合。從左到右索引默認(rèn)0開始的,從右到左索引默認(rèn)-1開始,下標(biāo)可以為空表示取到頭或尾。
List常用操作:
(1)list類型定義:L = ['Adam',95.5, 'Lisa',85, 'Bart',59];
(2)list訪問:L[3]、L[-2];
(3)list添加:L.insert(2,'Paul')或直接L[4]=xxx賦值;
(4)list刪除:L.pop(2);
(5)list長度:len(L);
(6)list查詢:L.index(“<待查詢>”)——返回下標(biāo);
(7)List循環(huán)遍歷:for index, value in enumerate(L):
(8)兩個(gè)list相加合成一個(gè):L1.extend(L2);
(9)list排序:L.sort(cmp=None, key=None, reverse=False);
(10)統(tǒng)計(jì)某個(gè)元素在list中出現(xiàn)的次數(shù):L.count(<待查詢>);
(11)list連接和重復(fù):加號(+)是列表連接運(yùn)算符,星號(*)是重復(fù)操作;
注:python快速生成list方法:[x*(x+1) for x in range(1,100,2)]表示生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]
4、Python元組(tuple)類型:tuple是另一種有序的列表,中文翻譯為“ 元組 ”。元組用”()”標(biāo)識。內(nèi)部元素用逗號隔開。但是元組不能二次賦值,相當(dāng)于只讀列表。
tuple常用操作:
tuple 和 list 非常類似,但是,tuple一旦創(chuàng)建完畢,就不能修改了:
(1)創(chuàng)建:t = ('Adam', 'Lisa', 'Bart')或t = ('Adam',);
(2)訪問:t[0]、t[1:5];
(3)組合相加:t1+t2;
(4)刪除:del t1;
(5)長度:len(t1);
(6)最大值:max(t1);
(7)最小值:min(t1);
5、字典(dict)類型:字典是無序的對象集合。字典用”{ }”標(biāo)識,字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移存取。
dict常用操作:
(1)創(chuàng)建:d = {key1 : value1, key2 : value2 };
(2)訪問:
①直接訪問:d[key1]、d[key2],這種訪問方式在key不存在時(shí)會(huì)報(bào)錯(cuò);
②安全訪問:d.get(key1, default=None),這種訪問方式,key不存在時(shí)返回默認(rèn)值,默認(rèn)值沒設(shè)定的情況下為None;
③不存在時(shí)set進(jìn)去:d.setdefault(key1, default=None);
(3)修改:d[key1] = value1;
(4)刪除:
① d.clear(),清空字典所有條目,對象仍存在;
② del d,刪除字典對象;
(5)長度:len(d);
(6)返回所有鍵或值:d.keys()、d.values();
(7)把d2加入到d1:d1.update(d2);
(8)循環(huán)遍歷:
①for key, value in d.items():
②for key, value in d.iteritems():
③items()和iteritems()區(qū)別:
items()返回的是列表對象,而iteritems()返回的是iterator對象。例如:
print dic.items() #[('a', 'hello'), ('c', 'you'), ('b', 'how')]
print dic.iteritems() #<dictionary-itemiterator object at 0x020E9A50>
注:iteritor是迭代器的意思,一次返回一個(gè)數(shù)據(jù)項(xiàng),直到?jīng)]有為止
(9)取兩個(gè)字典交集:dict(d1.items() & d2.items());
(10)復(fù)制:
① 直接賦值:a = b——其實(shí)就是對象的引用,兩個(gè)變量一模一樣;
② 淺拷貝:b = a.copy()——拷貝父對象,不會(huì)拷貝對象的內(nèi)部的子對象;
③ 深拷貝:b = copy.deepcopy(a)——copy 模塊的deepcopy方法,完全拷貝了父對象及其子對象(兩個(gè)完全不同的變量);
淺復(fù)制原理:
深復(fù)制原理:
參考鏈接來自:http://www.dbjr.com.cn/article/163266.htm
6、集合(Set)類型:如果我們只要dict 的 key,不關(guān)心 key 對應(yīng)的 value,目的就是保證這個(gè)集合的元素不會(huì)重復(fù),set就是這樣一種類似于list但值不允許重復(fù)的數(shù)據(jù)結(jié)構(gòu)。
Set常用操作:
(1)創(chuàng)建:s = set(['Adam', 'Lisa', 'Bart', 'Paul']);
(2)訪問:s[1]、s[2];
(3)添加:s.add(l);
(4)刪除set元素:s.remove(l);
三、與PHP數(shù)據(jù)結(jié)構(gòu)的一些區(qū)別
1、如前言所述,Python的變量數(shù)據(jù)結(jié)構(gòu)在一開始時(shí)也不需要強(qiáng)制聲明定義,但一旦賦值后就確定了變量類型,除了簡單的數(shù)字四則運(yùn)算能將str進(jìn)行隱式轉(zhuǎn)換外,大部分不同變量類型直接的運(yùn)算都需要手動(dòng)進(jìn)行變量類型的類型轉(zhuǎn)換。
2、對于PHP的數(shù)組類型,可以包含索引數(shù)組和關(guān)聯(lián)數(shù)組兩種,例如:
<?php $arr = array( 0=>'1234', 'a'=>'bcde', 2=>1234, 'b'=>5678 ); print_r($arr); ?>
運(yùn)行結(jié)果如下:
Array
(
[0] => 1234
[a] => bcde
[2] => 1234
[b] => 5678
)
但是在Python中,這種定義是不被允許的,Python將PHP中的數(shù)組分成List(索引數(shù)組)和dict(關(guān)聯(lián)數(shù)組),二者不可合并在一起。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
用python3 urllib破解有道翻譯反爬蟲機(jī)制詳解
這篇文章主要介紹了python破解網(wǎng)易反爬蟲機(jī)制詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08使用Python操作Elasticsearch數(shù)據(jù)索引的教程
這篇文章主要介紹了使用Python操作Elasticsearch數(shù)據(jù)索引的教程,Elasticsearch處理數(shù)據(jù)索引非常高效,要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)隨機(jī)游走的詳細(xì)解釋
這篇文章主要介紹了Python實(shí)現(xiàn)隨機(jī)游走的詳細(xì)解釋,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python爬取數(shù)據(jù)并實(shí)現(xiàn)可視化代碼解析
這篇文章主要介紹了Python爬取數(shù)據(jù)并實(shí)現(xiàn)可視化代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08python網(wǎng)絡(luò)應(yīng)用開發(fā)知識點(diǎn)淺析
在本篇內(nèi)容中小編給學(xué)習(xí)python的朋友們整理了關(guān)于網(wǎng)絡(luò)應(yīng)用開發(fā)的相關(guān)知識點(diǎn)以及實(shí)例內(nèi)容,需要的朋友們參考下。2019-05-05Python函數(shù)式編程實(shí)現(xiàn)登錄注冊功能
這篇文章主要為大家詳細(xì)介紹了Python函數(shù)式編程實(shí)現(xiàn)登錄注冊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02pandas缺失值np.nan, np.isnan, None, pd.isnull,&n
本文主要介紹了pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna2024-04-0410張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題
今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語言編寫,非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧2021-02-02