亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1706 | 回復(fù): 7
打印 上一主題 下一主題

這個列表復(fù)制怎么才正確呢? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-08-24 09:41 |只看該作者 |倒序瀏覽
本帖最后由 aswjh 于 2012-08-24 09:46 編輯

我是初學(xué)python,邊用邊學(xué),遇到一個問題,想初始化一個列表,含6個長度為10的子列表,我用a=[[0]*10]*6,然后賦值的話,比如a[0][2]=3,則a[0]-[5]的[2]都會變?yōu)?,用 is檢查發(fā)現(xiàn)a[0]-[5]是同一個對象。如果用[[0]*10,[0]*10,[0]*10,[0]*10,[0]*10,[0]*10]初始化倒也可以,但似乎太笨了點,有什么簡潔的方法實現(xiàn)嗎?

論壇徽章:
0
2 [報告]
發(fā)表于 2012-08-24 10:58 |只看該作者
回復(fù) 1# aswjh

用numpy包,
  1. >>> from numpy import zeros
  2. >>> a=zeros((6,10))
  3. >>> a
  4. array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  5.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  6.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  7.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  8.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  9.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
  10. >>> a[1][1] +=1
  11. >>> a
  12. array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  13.        [ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  14.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  15.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  16.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
  17.        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
復(fù)制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2012-08-24 11:34 |只看該作者
回復(fù) 1# aswjh
a= [[0,]*10 for x in range(6)]

   

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大;照
日期:2013-04-17 11:46:39
4 [報告]
發(fā)表于 2012-08-24 12:54 |只看該作者
回復(fù) 3# 106033177


    強大

論壇徽章:
0
5 [報告]
發(fā)表于 2012-08-24 13:09 |只看該作者
本帖最后由 aswjh 于 2012-08-24 13:17 編輯

不大用得到numpy包,用range實現(xiàn)似乎也有點麻煩,不過比我的方法強多了,先用著,謝謝兩位

論壇徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龍
日期:2014-08-08 09:28:02獅子座
日期:2014-09-14 20:32:05
6 [報告]
發(fā)表于 2012-08-24 15:01 |只看該作者
106033177 發(fā)表于 2012-08-24 11:34
回復(fù) 1# aswjh
a= [[0,]*10 for x in range(6)]


顛覆了我對列表推導(dǎo)式的理解
一般情況下列表推導(dǎo)式中for后邊的變量都會在前邊被引用到
比如:
  1. a = [ i*i for i in range(5)]
復(fù)制代碼
其中變量i在表達式i*i中被引用到。

還有在這個表達式中,既然后一個表達式[[0]*10]*6,得到的是對同一個列表引用六次的一個列表,改變其中一個的值,六個同時被更改。
那為什么前一個[0]*10得到的不是對同一個列表[0]的10次引用,得到十個對同一個列表[0]引用十次的列表?
  1. a=[[0]*10]*6
復(fù)制代碼

論壇徽章:
0
7 [報告]
發(fā)表于 2012-08-24 15:32 |只看該作者
后一個列表的元素是列表,是可變元素,前一個列表的元素是整數(shù),是不可變元素回復(fù) 6# ssfjhh


   

論壇徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龍
日期:2014-08-08 09:28:02獅子座
日期:2014-09-14 20:32:05
8 [報告]
發(fā)表于 2012-08-24 17:37 |只看該作者
回復(fù) 7# xiaosay

多謝,明白了。


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP