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

python復(fù)制列表時[:]和[::]之間有什么區(qū)別

 更新時間:2018年10月16日 08:32:06   作者:代碼日志  
這篇文章主要給大家介紹了關(guān)于python復(fù)制列表時[:]和[::]之間有什么區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

new = old[:]

Python老鳥都知道以上代碼是什么意思。它復(fù)制列表old到new。它對于新手來說是種困惑而且應(yīng)該避免使用這種方法。不幸的是[:]標(biāo)記法被廣泛使用,可能是Python程序員不知道更好的列表復(fù)制法吧。然而本文給大家介紹的是關(guān)于python復(fù)制列表時[:]和[::]之間有什么區(qū)別,下面來一起看看吧

我們可以(淺)使用[:]復(fù)制列表:

l = [1, 2, 3]
z1 = l[:]

我們也可以(淺)使用[::]復(fù)制它:

z2 = [::]

現(xiàn)在z1 == z2將為True.在Explain Python's slice notation閱讀答案后,我了解這些圖片的工作原理.

但是,我的問題是這兩個內(nèi)部是否有區(qū)別?在復(fù)制中比其他效率更高,還是做完全相同的事情?

最佳答案

他們之間絕對沒有區(qū)別,至少在Python 3中.如果你愿意,可以使用dis.dis來檢查每個這些使用的字節(jié)碼:

l = [1, 2, 3, 4]

針對l [:]發(fā)出的字節(jié)碼:

from dis import dis
dis('l[:]')
 1   0 LOAD_NAME    0 (l)
    3 LOAD_CONST    0 (None)
    6 LOAD_CONST    0 (None)
    9 BUILD_SLICE    2
    12 BINARY_SUBSCR
    13 RETURN_VALUE

而為l [::]發(fā)送的字節(jié)碼:

dis('l[::]')
 1   0 LOAD_NAME    0 (l)
    3 LOAD_CONST    0 (None)
    6 LOAD_CONST    0 (None)
    9 BUILD_SLICE    2
    12 BINARY_SUBSCR
    13 RETURN_VALUE

你可以看到,它們完全一樣.對于構(gòu)建切片(BUILD_SLICE)的起始和停止值都加載一些無(兩個LOAD_CONSTS),并應(yīng)用它. NONE是Standard Type hierarchy中切片文檔中所述的默認(rèn)值:

Special read-only attributes: start is the lower bound; stop is the upper bound; step is the step value; each is None if omitted. These attributes can have any type.

使用[:],它的鍵擊少.

實(shí)際上有趣的是,在Python 2.x中,生成的字節(jié)代碼是不同的,由于l [:]的命令較少,可能會稍微更高效:

>>> def foo():
...  l[:]
... 
>>> dis(foo)
 2   0 LOAD_GLOBAL    0 (l)
    3 SLICE+0    
    4 POP_TOP    
    5 LOAD_CONST    0 (None)
    8 RETURN_VALUE 

而對于l [::]:

>>> def foo2():
...  l[::]
... 
>>> dis(foo2)
 2   0 LOAD_GLOBAL    0 (l)
    3 LOAD_CONST    0 (None)
    6 LOAD_CONST    0 (None)
    9 LOAD_CONST    0 (None)
    12 BUILD_SLICE    3
    15 BINARY_SUBSCR  
    16 POP_TOP    
    17 LOAD_CONST    0 (None)
    20 RETURN_VALUE 

即使我沒有定時這些(我不會,差異應(yīng)該很小)看起來,由于只需要更少的指示,l [:]可能稍微好一點(diǎn).

這種相似性當(dāng)然不存在于列表中;它適用于Python中的所有序列:

# Note: the Bytecode class exists in Py > 3.4
>>> from dis import Bytecode
>>>
>>> Bytecode('(1, 2, 3)[:]').dis() == Bytecode('(1, 2, 3)[::]').dis() 
True
>>> Bytecode('"string"[:]').dis() == Bytecode('"string"[::]').dis() 
True

對于別人也是如此.

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • python之no module named xxxx以及虛擬環(huán)境配置過程

    python之no module named xxxx以及虛擬環(huán)境配置過程

    在Python開發(fā)過程中,經(jīng)常會遇到環(huán)境配置和包管理的問題,主要原因包括未安裝所需包或使用虛擬環(huán)境導(dǎo)致的,通過pip install命令安裝缺失的包是解決問題的一種方式,此外,使用虛擬環(huán)境,例如PyCharm支持的Virtualenv,可以為每個項目創(chuàng)建獨(dú)立的運(yùn)行環(huán)境
    2024-10-10
  • PyQt5+requests實(shí)現(xiàn)車票查詢工具

    PyQt5+requests實(shí)現(xiàn)車票查詢工具

    這篇文章主要為大家詳細(xì)介紹了PyQt5+requests實(shí)現(xiàn)車票查詢工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹

    pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹

    這篇文章主要介紹了pytorch之關(guān)于PyTorch結(jié)構(gòu)的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • django實(shí)現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義

    django實(shí)現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義

    這篇文章主要介紹了django實(shí)現(xiàn)模板中的字符串文字和自動轉(zhuǎn)義,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python定時任務(wù)schedule庫用法詳細(xì)講解

    python定時任務(wù)schedule庫用法詳細(xì)講解

    python中有一個輕量級的定時任務(wù)調(diào)度的庫schedule,下面這篇文章主要給大家介紹了關(guān)于python定時任務(wù)schedule庫用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • python logging模塊的使用詳解

    python logging模塊的使用詳解

    這篇文章主要介紹了python logging模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作

    python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作

    這篇文章主要介紹了python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python模板的使用詳細(xì)講解

    Python模板的使用詳細(xì)講解

    Django 模板是使用 Django 模板語言標(biāo)記的一個文本文檔或Python字符串。模板引擎可以識別和解釋一些構(gòu)造。主要是變量和標(biāo)簽。模板是通過上下文來渲染的。渲染用變量的值替換變量,變量的值在上下文中查找,并執(zhí)行標(biāo)簽。其他的一切都按原樣輸出
    2022-10-10
  • Pandas操作CSV文件的讀寫實(shí)現(xiàn)方法

    Pandas操作CSV文件的讀寫實(shí)現(xiàn)方法

    這篇文章主要介紹了Pandas操作CSV文件的讀寫實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 新手學(xué)python應(yīng)該下哪個版本

    新手學(xué)python應(yīng)該下哪個版本

    在本篇內(nèi)容中小編給大家整理的是關(guān)于新手學(xué)python應(yīng)該下版本的相關(guān)知識點(diǎn),需要的朋友們可以參考學(xué)習(xí)下。
    2020-06-06

最新評論

宜宾县| 宝丰县| 栖霞市| 江阴市| 贵阳市| 寻甸| 隆安县| 南城县| 淳化县| 福州市| 田阳县| 阿图什市| 久治县| 托克逊县| 思茅市| 昌平区| 吉安县| 伽师县| 康保县| 松原市| 左云县| 来安县| 新干县| 台湾省| 临湘市| 萝北县| 鱼台县| 项城市| 太白县| 达拉特旗| 阿克苏市| 伊宁县| 皮山县| 灌云县| 云霄县| 乌苏市| 红桥区| 平原县| 漠河县| 连州市| 许昌市|