今天來聊一聊列表在實際開發中的應用場景。
在開發中,選用何種資料結構是由我們面對的資料特徵和業務場景決定的。
…(此處省略 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用於開發網路爬蟲 網路爬蟲的用途是進行資料採集,也就是將網際網路中的資料採集過來。網路爬蟲的難點其實並不在於爬蟲本身,由於 方為了避免被爬取回採取各種各樣的反...
區塊鏈應用場景有哪些?
區塊鏈應用場景有哪些?區塊鏈絕對是現在最火的乙個詞,很多人因為位元幣認識了區塊鏈,其實區塊鏈只是位元幣底層的技術,相當於乙個公共的賬本,每個人各記各的賬,去中心 去信任 匿名性是區塊鏈的三大核心特點。去中心化 區塊鏈有許多節點分布式儲存資料,沒有乙個中心能將它們集中起來統一管理,並運用了密碼學的方法...