在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 請教,這道題的答案是?

請教,這道題的答案是?

這道題的答案是?


arr = [[]]*3
arr[0].append(7)
try:
    print(arr[1][0])
except IndexError:
    print('0')
回答
編輯回答
神經(jīng)質(zhì)

arr是[[7], [7], [7]],結(jié)果7

2018年9月7日 03:28
編輯回答
有你在

弄懂這兩個(gè)區(qū)別就明白了

arr = [[],[],[]]
print id(arr[0]),id(arr[1]),id(arr[2])

arr = [[]]*3
print id(arr[0]),id(arr[1]),id(arr[2])
2018年5月25日 21:44
編輯回答
囍槑

我來解釋一下,在python中,list 實(shí)例乘以數(shù)字,是認(rèn)為是重復(fù) repeat 的意思,關(guān)于這點(diǎn)的源碼操作呢,在listobject.clist_repeat 函數(shù)中,https://github.com/python/cpy... ,挑重點(diǎn)解釋下:

static PyObject * list_repeat(PyListObject *a, Py_ssize_t n)
{
    ...
    np = (PyListObject *) PyList_New(size);
    items = np->ob_item;
    if (Py_SIZE(a) == 1) {
        elem = a->ob_item[0];
        for (i = 0; i < n; i++) {
            items[i] = elem;
            Py_INCREF(elem);
        }
        return (PyObject *) np;
    }
    ...
}

a->ob_item[0] 也就是指向一個(gè)空數(shù)組 [] 的指針, 將它的值都賦值給 items[0:n] = elem 。出來的結(jié)果就是 arr 中有3個(gè)元素,但是這3個(gè)元素都是都一個(gè)對象的引用。當(dāng)對任何一個(gè)對象操作時(shí), arr[0].append(7) ,因?yàn)橐玫年P(guān)系,此時(shí)數(shù)組就變成了:

[[7], [7], [7]]

因此打印的結(jié)果就是7了。

2017年3月6日 22:14
編輯回答
生性

這是 Michael_翔_ 的圖,一眼就懂

718059586-56d02dc065b61

2017年6月20日 10:46
編輯回答
負(fù)我心

這是一道陷阱題:絕大多數(shù)人給的答案可能是:0, 因?yàn)楹苋菀渍J(rèn)為 arr = [[7],[],[]]

2017年2月4日 22:05
編輯回答
執(zhí)念

這是因?yàn)閍rr[0],arr[1],arr[2]在內(nèi)存中的地址是一樣的,所以你往arr[0]中添加7,后兩個(gè)也變成一樣的了,所以結(jié)果就是7了

2017年6月24日 06:26
編輯回答
祈歡

這種一般都系很閑的人才會去做

2018年9月22日 09:56
編輯回答
幼梔
Uncaught SyntaxError: Unexpected token :
2018年9月20日 10:33