Python 列表的應用場景有哪些?你使用對了嗎?

2021-10-22 14:18:50 字數 2682 閱讀 1650

今天來聊一聊列表在實際開發中的應用場景。

在開發中,選用何種資料結構是由我們面對的資料特徵和業務場景決定的。

…(此處省略 n 多情形。)

一旦確定了資料特徵和業務場景,我們就可以從開發工具箱中選擇合適的工具了。

對於 list 而言,首先它是乙個物件集合,你可以在處理批量資料時使用 list。

>>

> alist =

[i for i inrange(21)

]>>

> alist [0

,1,2

,3,4

,5,6

,7,8

,9,10

,11,12

,13,14

,15,16

,17,18

,19,20

]>>

2021

)>>

> alist [0

,1,2

,3,4

,5,6

,7,8

,9,10

,11,12

,13,14

,15,16

,17,18

,19,20

,2021

]

我們知道,tuple 也可以用來儲存多個物件,但是 tuple 是不可變的,一旦初始化,無法再增減其中的元素的個數。tuple 從語法上保證了元素數目不會被修改。

如果你恰好不希望別人向資料集中增刪元素,你應該優先使用 tuple,而非list。反過來,如果你需要動態調整資料集合中的元素的個數,那就應該選擇 list。

這是否意味著所有動態資料集都可以使用 list 呢?非也。

如果你的資料很少被修改,絕大部分時間都是被讀取的,這很適合使用 list 來儲存。因為 list 為我們提供了索引和切片操作,可以快速訪問其中的元素。

'''

'''>>

> alist [0

,1,2

,3,4

,5,6

,7,8

,9,10

,11,12

,13,14

,15,16

,17,18

,19,20

,2021

]>>

> alist[10]

10>>

> alist[3:

9][3

,4,5

,6,7

,8]>>

> alist[3:

9:2]

[3,5

,7]

'''

'''>>

> stack =[3

,4,5

]>>6)

>>7)

>>

> stack [3

,4,5

,6,7

]>>

> stack.pop()7

>>

> stack [3

,4,5

,6]>>

> stack.pop()6

>>

> stack [3

,4,5

]

這種情形下,list 其實就用作棧(stack)了。

但是,如果你的程式需要頻繁在 list 頭部或中間插入或刪除元素,list 就不太適合你的需求了。

因為,list 底層是通過變長陣列實現的。在陣列頭部或中間插入或刪除元素,需要逐個移動插入位置之後的每個元素。這在資料量大時會消耗大量時間,效率低下。

如果想在 python 中使用鏈式結構,可以使用 collections.deque。嚴格來說,collections.deque 也不是乙個完全的鏈式結構,它是乙個帶有塊(block)資料的鏈式結構。每個 block 都是乙個線性陣列。

我們來看乙個需要頻繁在資料集的首尾執行操作的場景:佇列(queue)。

佇列是乙個先進先出(fifo)的資料結構,資料從尾部插入,從頭部取出。就好像我們日常排隊一樣。

由於需要頻繁刪除頭部元素,list 也不適合用作佇列。很多初學者僅從list 這個單詞的字面意思來理解,就把 list 作為佇列來使用,這是欠妥的。

我們可以用 collections.deque 來實現佇列操作。

>>

>

from collections import deque

>>

> queue = deque(

["eric"

,"john"

,"michael"])

>>

"terry"

)>>

"graham"

)>>

> queue

deque(

['eric'

,'john'

,'michael'

,'terry'

,'graham'])

>>

>

>>

> queue.popleft(

)'eric'

>>

> queue.popleft(

)'john'

>>

> queue

deque(

['michael'

,'terry'

,'graham'

])

總結

財務RPA,財務RPA機械人的應用場景有哪些?

眾所周知,機器 程自動化rpa在過去幾年中得到了快速發展。現在,已經可以實現端到端完全自動化流程,並可以利用智慧型自動化擴充套件rpa部署。目前rpa機械人在金融與銀行 保險 電力 能源 製造業 公共服務 零售 業務流程外包 共享中心等行業中廣泛應用。本文將重點講一下財務rpa機械人在金融銀行業的使...

一 Python的應用場景

python用於簡單指令碼程式設計,如編寫2048小遊戲或12306的自動搶票軟體 python用於系統程式設計,如開發系統應用 python用於開發網路爬蟲 網路爬蟲的用途是進行資料採集,也就是將網際網路中的資料採集過來。網路爬蟲的難點其實並不在於爬蟲本身,由於 方為了避免被爬取回採取各種各樣的反...

區塊鏈應用場景有哪些?

區塊鏈應用場景有哪些?區塊鏈絕對是現在最火的乙個詞,很多人因為位元幣認識了區塊鏈,其實區塊鏈只是位元幣底層的技術,相當於乙個公共的賬本,每個人各記各的賬,去中心 去信任 匿名性是區塊鏈的三大核心特點。去中心化 區塊鏈有許多節點分布式儲存資料,沒有乙個中心能將它們集中起來統一管理,並運用了密碼學的方法...