国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

在Python中,“。append()”和“ + = []”之間有什么區別?

瀏覽:2日期:2022-08-07 14:19:13
如何解決在Python中,“。append()”和“ + = []”之間有什么區別??

對于您而言,唯一的區別是性能:append是兩倍的速度。

Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win32Type 'help', 'copyright', 'credits' or 'license' for more @R_70_4037@ion.>>> import timeit>>> timeit.Timer(’s.append('something')’, ’s = []’).timeit()0.20177424499999999>>> timeit.Timer(’s += ['something']’, ’s = []’).timeit()0.41192320500000079Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32Type 'help', 'copyright', 'credits' or 'license' for more @R_70_4037@ion.>>> import timeit>>> timeit.Timer(’s.append('something')’, ’s = []’).timeit()0.23079359499999999>>> timeit.Timer(’s += ['something']’, ’s = []’).timeit()0.44208112500000141

通常情況下,append會將一個項目添加到列表中,而+=將右側列表的 所有 元素復制到左側列表中。

比較字節碼,我們可以假設appendversion在LOAD_ATTR+CALL_FUNCTION和+ = version-中浪費了周期BUILD_LIST。顯然BUILD_LIST大于LOAD_ATTR+ CALL_FUNCTION。

>>> import dis>>> dis.dis(compile('s = []; s.append(’spam’)', ’’, ’exec’)) 1 0 BUILD_LIST 0 3 STORE_NAME 0 (s) 6 LOAD_NAME0 (s) 9 LOAD_ATTR1 (append) 12 LOAD_CONST 0 (’spam’) 15 CALL_FUNCTION 1 18 POP_TOP 19 LOAD_CONST 1 (None) 22 RETURN_VALUE>>> dis.dis(compile('s = []; s += [’spam’]', ’’, ’exec’)) 1 0 BUILD_LIST 0 3 STORE_NAME 0 (s) 6 LOAD_NAME0 (s) 9 LOAD_CONST 0 (’spam’) 12 BUILD_LIST 1 15 INPLACE_ADD 16 STORE_NAME 0 (s) 19 LOAD_CONST 1 (None) 22 RETURN_VALUE

我們可以通過減少LOAD_ATTR開銷來進一步提高性能:

>>> timeit.Timer(’a('something')’, ’s = []; a = s.append’).timeit()0.15924410999923566解決方法

之間有什么區別?

some_list1 = []some_list1.append('something')

some_list2 = []some_list2 += ['something']

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 吉安市| 焦作市| 隆子县| 安庆市| 吉水县| 遂宁市| 苍南县| 珲春市| 射洪县| 东至县| 丰都县| 隆尧县| 福海县| 习水县| 宣威市| 丰都县| 农安县| 集贤县| 南雄市| 禄丰县| 武强县| 策勒县| 濉溪县| 务川| 察哈| 米泉市| 海晏县| 江油市| 屏边| 乌海市| 鸡泽县| 开鲁县| 林州市| 星子县| 望都县| 得荣县| 灵山县| 库车县| 台中县| 绍兴县| 上栗县|