最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python從入門到實(shí)戰(zhàn)之?dāng)?shù)據(jù)結(jié)構(gòu)篇

 更新時間:2021年11月04日 15:12:56   作者:嗨!程序媛  
數(shù)據(jù)結(jié)構(gòu)中有很多樹的結(jié)構(gòu),其中包括二叉樹、二叉搜索樹、2-3樹、紅黑樹等等。本文中對數(shù)據(jù)結(jié)構(gòu)進(jìn)行了總結(jié),不求嚴(yán)格精準(zhǔn),但求簡單易懂

前言

我是栗子——專為小白準(zhǔn)備《Python從入門到實(shí)戰(zhàn)》內(nèi)容。

這不是上一期剛講完循環(huán)判斷,還給大家出了很多新手的題目,邊學(xué)邊練習(xí)才有效果嘛。

時隔幾天,大家都吼完了叭~實(shí)在沒寫完的慢慢復(fù)習(xí),我更新文章也挺慢的!哈哈哈哈

今天想一想:要學(xué)數(shù)據(jù)結(jié)構(gòu)啦~

一、Python有那幾種數(shù)據(jù)結(jié)構(gòu)?

Python 有四種數(shù)據(jù)結(jié)構(gòu),分別是:列表、字典、元組,集合。每種數(shù)據(jù)結(jié)構(gòu)都有自己的特點(diǎn),并且都有著獨(dú)到的用處。為了避免過早地陷入細(xì)枝末節(jié)。

我們先從整體上來認(rèn)識一下這四種數(shù)據(jù)結(jié)構(gòu):從最容易識別的特征上來說,列表中的元素使用方括號擴(kuò)起來,字典和集合是花括號,而元組則是圓括號。其中字典中的元素是均帶有 ‘:' 的 key 與 value 的對應(yīng)關(guān)系組。

1)列表(list)

1.1 什么是列表?

最顯著的特征是:

  • 列表中的每一個元素都是可變的;
  • 列表中的元素是有序的,也就是說每一個元素都有一個位置;
  • 列表可以容納 Python 中的任何對象。

列表中的元素是可變的,這意味著我們可以在列表中添加、刪除和修改元素。

輸入:

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']
print(Weekday[0])

第三個特征是列表可以裝入 Python 中所有的對象,往下看:

all_in_list = [
    1,                              #整數(shù)
    1.0,                            #浮點(diǎn)數(shù)
    'a word',                       #字符串
    print(1),                       #函數(shù)
    True,                           #布爾值
    [1,2],                          #列表中套列表
    (1,2),                          #元組
    {'key':'value'}                 #字典
]

1.2列表的增刪改查

對于數(shù)據(jù)的操作,最常見的是增刪改查這四類。從列表的插入方法開始,輸入:

fruit = ['pineapple','pear']
fruit.insert(1,'grape')
print(fruit)

在使用 insert 方法的時候,必須指定在列表中要插入新的元素的位置,插入元素的實(shí)際位置是在指定位置元素之前的位置,如果指定插入的位置在列表中不存在,實(shí)際上也就是超出指定列表長度,那么這個元素一定會被放在列表的最后位置。

  • 其他方法達(dá)到“插入”的效果:
fruit[0:0] = ['Orange']
print(fruit)
  • 刪除列表中元素的方法是使用 remove():
fruit = ['pinapple','pear','grape']
fruit.remove('grape')
print(fruit)
  • 替換修改其中的元素:
fruit[0] = 'Grapefruit'
  • 刪除還有一種方法,那就是使用 del 關(guān)鍵字來聲明:
del fruit[0:2]
print(fruit)

2)字典(Dictionary)

2.1 什么是字典?

字典這種數(shù)據(jù)結(jié)構(gòu)的特征也正如現(xiàn)實(shí)世界中的字典一樣,使用名稱-內(nèi)容進(jìn)行數(shù)據(jù)的構(gòu)建,在 Python 中分別對應(yīng)著鍵(key)-值(value),習(xí)慣上稱之為鍵值對。

字典的特征總結(jié)如下:

  • 字典中數(shù)據(jù)必須是以鍵值對的形式出現(xiàn)的;
  • 邏輯上講,鍵是不能重復(fù)的,而值可以重復(fù);
  • 字典中的鍵(key)是不可變的,也就是無法修改的;而值(value)是可變的,可修改的,可以是任何對象。

舉個小栗子:

這是字典的書寫方式:
 
NASDAQ_code = {
    'BIDU':'Baidu',
    'SINA':'Sina',
    'YOKU':'Youku'
}

一個字典中鍵與值并不能脫離對方而存在,如果你寫成 {'BIDU':} 會引發(fā)語法錯誤。

記住這兩個特征: key 和 value 是一一對應(yīng)的,key 是不可變的。

同時字典中的鍵值不會有重復(fù),即便你這么做,相同的鍵值也只能出現(xiàn)一次:

a = {'key':123,'key':123}
print(a)

2.2 字典的增刪改查

首先我們按照映射關(guān)系創(chuàng)建一個字典:

NASDAQ_code = {'BIDU':'Baidu','SINA':'Sina'}

與列表不同的是,字典并沒有一個可以往里面添加單一元素的“方法”,但是我們可以通過這種方式進(jìn)行添加:

NASDAQ_code['YOKU'] = 'Youku'
print(NASDAQ_code)

列表中有用來添加多個元素的方法 extend() ,在字典中也有對應(yīng)的添加多個元素的方法 update()

NASDAQ_code.update({'FB':'Facebook','TSLA':'Tesla'})

刪除字典中的元素則使用 del 方法:

del NASDAQ_code['FB']

需要注意的是,雖說字典是使用的花括號,在索引內(nèi)容的時候仍舊使用的是和列表一樣的方括號進(jìn)行索引,只不過在括號中放入的一定是——字典中的鍵,也就是說需要通過鍵來索引值:

NASDAQ_code['TSLA']

同時,字典是不能夠切片的,也就是說下面這樣的寫法應(yīng)用在字典上是錯誤的:

chart[1:4]  # WRONG!

3)元組(Tuple)

元組其實(shí)可以理解成一個穩(wěn)固版的列表,因?yàn)樵M是不可修改的,因此在列表中的存在的方法均不可以使用在元組上,但是元組是可以被查看索引的,方式就和列表一樣:

letters = ('a','b','c','d','e','f','g')
letter[0]

4)集合(Set)

4.1什么是集合?

每一個集合中的元素是無序的、不重復(fù)的任意對象,我們可以通過集合去判斷數(shù)據(jù)的從屬關(guān)系,有時還可以通過集合把數(shù)據(jù)結(jié)構(gòu)中重復(fù)的元素減掉。

集合不能被切片也不能被索引,除了做集合運(yùn)算之外,集合元素可以被添加還有刪除:

a_set = {1,2,3,4}                                              
a_set.add(5)
a_set.discard(5)

5)番外——數(shù)據(jù)結(jié)構(gòu)的一些技巧

5.1多重循環(huán)

舉個栗子:比如,在整理表格或者文件的時候會按照字母或者日期進(jìn)行排序,在 Python 中也存在類似的功能。

num_list = [6,2,7,4,1,3,5]
print(sorted(num_list))

sorted 函數(shù)按照長短、大小、英文字母的順序給每個列表中的元素進(jìn)行排序。這個函數(shù)會經(jīng)常在數(shù)據(jù)的展示中使用,其中有一個非常重要的地方,sorted 函數(shù)并不會改變列表本身,你可以把它理解成是先將列表進(jìn)行復(fù)制,然后再進(jìn)行順序的整理。

在使用默認(rèn)參數(shù) reverse 后列表可以被按照逆序整理:

sorted(num_list,reverse=True)

在整理列表的過程中,如果同時需要兩個列表應(yīng)該怎么辦?這時候就可以用到 zip 函數(shù),比如:

for a,b in zip(num,str):
    print(b,'is',a)

5.2推導(dǎo)式

數(shù)據(jù)結(jié)構(gòu)中的推導(dǎo)式,也許你還看到過它的另一種名稱叫做列表的解析式。

現(xiàn)在我有10個元素要裝進(jìn)列表中,普通的寫法是這樣的:

a = []
for i in range(1,11):
    a.append(i)

下面換成列表解析的方式來寫:

b = [i for i in range(1,11)]

列表解析式不僅非常方便,并且在執(zhí)行效率上要遠(yuǎn)遠(yuǎn)勝過前者,我們把兩種不同的列表操作方式所耗費(fèi)的時間進(jìn)行對比,就不難發(fā)現(xiàn)其效率的巨大差異:

import time
 
a = []
t0 = time.clock()
for i in range(1,20000):
    a.append(i)
print(time.clock() - t0, seconds process time")
t0 = time.clock()
b = [i for i in range(1,20000)]
print(time.clock() - t0, seconds process time")

得到結(jié)果:

8.999999999998592e-06 seconds process time
0.0012320000000000005 seconds process time

列表推導(dǎo)式的用法也很好理解,可以簡單地看成兩部分。紅色虛線后面的是我們熟悉的 for 循環(huán)的表達(dá)式,而虛線前面的可以認(rèn)為是我們想要放在列表中的元素,在這個例子中放在列表中的元素即是后面循環(huán)的元素本身。

5.3循環(huán)列表時獲取元素的索引

現(xiàn)在我們有一個字母表,如何能像圖中一樣,在索引的時候得到每個元素的具體位置的展示呢?

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
a is 1
b is 2
c is 3
d is 4
e is 5
f is 6 
g is 7

前面提到過,列表是有序的,這時候我們可以使用 Python 中獨(dú)有的函數(shù) enumerate 來進(jìn)行:

letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
for num,letter in enumerate(letters):
    print(letter,'is',num + 1)

結(jié)尾

你學(xué)廢了嘛?等過幾天你學(xué)廢了,記得評論吱一聲,到時候我再更新~哈哈哈

快來跟我一起學(xué)習(xí)吧!關(guān)注小編,每天更新精彩內(nèi)容哦~

到此這篇關(guān)于Python從入門到實(shí)戰(zhàn)之?dāng)?shù)據(jù)結(jié)構(gòu)篇的文章就介紹到這了,更多相關(guān)Python 數(shù)據(jù)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)GPU加速的基本操作

    Python實(shí)現(xiàn)GPU加速的基本操作

    本文簡單介紹了Python實(shí)現(xiàn)GPU加速的基本操作,文中運(yùn)用大量代碼講解的非常詳細(xì),有一定的參考價值,需要學(xué)習(xí)相關(guān)知識的小伙伴一起來看看吧
    2021-08-08
  • 如何處理Python3.4 使用pymssql 亂碼問題

    如何處理Python3.4 使用pymssql 亂碼問題

    這篇文章主要介紹了如何處理Python3.4 使用pymssql 亂碼問題的相關(guān)資料,涉及到python pymssql相關(guān)知識,對此感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Python基于xlrd模塊處理合并單元格

    Python基于xlrd模塊處理合并單元格

    這篇文章主要介紹了Python基于xlrd模塊處理合并單元格,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python多線程 Queue 模塊常見用法

    Python多線程 Queue 模塊常見用法

    Python的Queue模塊提供一種適用于多線程編程的FIFO實(shí)現(xiàn)。它可用于在生產(chǎn)者(producer)和消費(fèi)者(consumer)之間線程安全(thread-safe)地傳遞消息或其它數(shù)據(jù),因此多個線程可以共用同一個Queue實(shí)例。Queue的大小(元素的個數(shù))可用來限制內(nèi)存的使用
    2021-07-07
  • python簡單實(shí)現(xiàn)最大似然估計(jì)&scipy庫的使用詳解

    python簡單實(shí)現(xiàn)最大似然估計(jì)&scipy庫的使用詳解

    這篇文章主要介紹了python簡單實(shí)現(xiàn)最大似然估計(jì)&scipy庫的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列及二叉樹定義與用法淺析

    Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列及二叉樹定義與用法淺析

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列及二叉樹定義與用法,結(jié)合具體實(shí)例形式分析了Python數(shù)據(jù)結(jié)構(gòu)中棧、隊(duì)列及二叉樹的定義與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python實(shí)例方法與類方法和靜態(tài)方法介紹與區(qū)別分析

    Python實(shí)例方法與類方法和靜態(tài)方法介紹與區(qū)別分析

    在 Python 中,實(shí)例方法(instance method),類方法(class method)與靜態(tài)方法(static method)經(jīng)常容易混淆。本文通過代碼例子來說明它們的區(qū)別
    2022-10-10
  • Python多進(jìn)程模式實(shí)現(xiàn)多核CPU并行計(jì)算

    Python多進(jìn)程模式實(shí)現(xiàn)多核CPU并行計(jì)算

    隨著計(jì)算機(jī)硬件的不斷發(fā)展,多核CPU已經(jīng)成為普及的硬件設(shè)備,在本文中,我們將重點(diǎn)介紹在Python中如何利用多進(jìn)程模式提高程序的執(zhí)行效率,感興趣的可以了解一下
    2023-05-05
  • numpy系列之?dāng)?shù)組重塑的實(shí)現(xiàn)

    numpy系列之?dāng)?shù)組重塑的實(shí)現(xiàn)

    本文主要介紹了numpy數(shù)組重塑。所謂數(shù)組重塑就是更改數(shù)組的形狀,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python 通過pip安裝Django詳細(xì)介紹

    Python 通過pip安裝Django詳細(xì)介紹

    這篇文章主要介紹了Python 通過pip安裝Django詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論

珲春市| 乌什县| 灵丘县| 广河县| 林口县| 郧西县| 伊川县| 义马市| 鲁山县| 宿州市| 如东县| 平陆县| 黄山市| 涟水县| 墨江| 浪卡子县| 泸水县| 兴山县| 东山县| 昔阳县| 荔波县| 新化县| 涡阳县| 巍山| 绥宁县| 石家庄市| 房产| 吴忠市| 祁东县| 佛学| 普安县| 湖北省| 哈密市| 鹤壁市| 尼勒克县| 福州市| 积石山| 新津县| 镇赉县| 望城县| 高雄县|