麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Python > 正文

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

2020-02-15 23:13:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

new = old[:]

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

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

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

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

z2 = [::]

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

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

最佳答案

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

l = [1, 2, 3, 4]

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

from dis import disdis('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

你可以看到,它們完全一樣.對(duì)于構(gòu)建切片(BUILD_SLICE)的起始和停止值都加載一些無(wú)(兩個(gè)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 [:]的命令較少,可能會(huì)稍微更高效:

>>> 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 

而對(duì)于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 

即使我沒(méi)有定時(shí)這些(我不會(huì),差異應(yīng)該很小)看起來(lái),由于只需要更少的指示,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            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美粗暴analvideos | japan护士性xxxⅹhd | 日韩精品中文字幕一区二区 | 久久精品中文字幕一区 | 曰韩一二三区 | 视频一区二区久久 | 美女亚洲综合 | 久久免费视频7 | 国产四区 | 国产精品免费观看视频 | 97超级碰碰人国产在线观看 | 黄色免费电影网址 | 污在线观看网站 | 免费在线观看中文字幕 | 羞羞电影在线观看 | 中文字幕一区二区三区四区 | 大西瓜永久免费av在线 | 一级黄色性感片 | 成人在线免费观看小视频 | 国产亚洲精品久久777777 | 亚洲成人免费视频在线 | 久久精品79国产精品 | 男男羞羞视频网站国产 | 色999久久久精品人人澡69 | 亚洲成年人免费网站 | 91在线播放国产 | 午夜视频久久久 | 午夜视频色 | 福利免费在线 | 成人18网站 | 看全色黄大色黄大片女图片 | 久精品久久 | 久久免费观看一级毛片 | 免费视频观看 | 羞羞视频免费视频欧美 | 成人毛片一区 | 久久精品艹| 欧美一区在线观看视频 | 日本中文字幕网址 | 日日天日日夜日日摸 | 国产一级毛片av |