本文目錄一覽:
- 1、python 中此例totallist = list1[:]有人說是淺拷貝有人說是切片操作我看資料淺拷貝是用 shallow copy
- 2、python 3 如何提取list中值
- 3、python 嵌套list讀取
- 4、Python的列表有沒有淺複製跟深複製的概念
- 5、python list怎麼copy
- 6、python3對於列表的 [:]和list.copy 有什麼區別?
python 中此例totallist = list1[:]有人說是淺拷貝有人說是切片操作我看資料淺拷貝是用 shallow copy
python中序列都可以用切片操作。list[n:m:x],n表示起始位置,m表示終止位置(不包括),x表示步長。如果省略三個參數,默認為從0到最後,步長為一。
淺拷貝是拷貝值,修改拷貝的值不會影響原來的值。
totallist=list1[:]是切片操作,它實現的效果是將list1的值賦給totallist,也是淺拷貝。修改totallist的值不會影響到list1;如果是totallist=list1,修改其中任何一個列表,另一個都會隨之改變。 在這裡,切片操作是一種手段,淺拷貝是結果。
python 3 如何提取list中值
$ pythonPython 2.7.3 (default, Mar 14 2014, 11:57:14) [GCC 4.7.2] on linux2Type “help”, “copyright”, “credits” or “license” for more information. lst=[… ’11’, ‘1’, ‘100’, ’10\n’,… ’11’, ‘2’, ‘200’, ’20\n’,… ’11’, ‘3’, ‘300’, ’30\n’,… ’11’, ‘4’, ‘400’, ’40\n’] # 第一步:將數據組織成方便使用的結構 data = [… map(int, lst[i*4:(i+1)*4])… for i in xrange(len(lst)/4)… ] data[[11, 1, 100, 10], [11, 2, 200, 20], [11, 3, 300, 30], [11, 4, 400, 40]] # 第二步就直接簡單地計算好了 1. * sum([x[2] for x in data]) / len(data)250.0 1. * sum([x[3] for x in data]) / len(data)25.0
或者在要處理很多月份,並有按月計算的需求時:按月-數據的字典結構組織數據並設一個計算平均值的函數就更簡單了
123456789101112131415161718192021222324
lst=[… ’11’, ‘1’, ‘100’, ’10\n’,… ’11’, ‘2’, ‘200’, ’20\n’,… ’11’, ‘3’, ‘300’, ’30\n’,… ’11’, ‘4’, ‘400’, ’40\n’,… ’12’, ‘1’, ‘120’, ’12\n’,… ’12’, ‘2’, ‘230’, ’23\n’,… ’12’, ‘3’, ‘340’, ’34\n’,… ’12’, ‘4’, ‘450’, ’45\n’,… ] data = {} for x in [… map(int, lst[i*4:(i+1)*4])… for i in xrange(len(lst)/4)… ]:… data.setdefault(x[0], []).append(x[1:])… def avg(serial):… return 1. * sum(serial) / len(serial)… avg([x[1] for x in data[12]]) # 計算12月的第二個數據的平均值285.0
python 嵌套list讀取
b1=[[2]*3]*2
b2=[[2,2,2],[2,2,2]]
這個兩個定義的變量其實時不一樣的
b2一個list,包含兩個list元素
b1是1個list元素的兩個淺拷貝,可以理解成兩個指向[2]*3的指針。
出現這種問題,實際上理解的誤區,[2]*3
=
[2,2,2]
就想當然的把[[2]*3]*2=
[2,2,2]*2
=
[[2,2,2]
[2,2,2]]
其實[[]]是一個list的淺拷貝(或者理解成指向list指針)
更詳細的可以看下python的文檔,裡面有說明。
Python的列表有沒有淺複製跟深複製的概念
有的。比如:
首先這裡導入copy模塊,並生成三個列表
對list1的最外層進行修改操作:
list2和list3沒有任何影響
對list1內層進行修改操作:
發現list2和list3有不同,其中list2就是淺複製,list3就是深複製
淺複製就是指當對象的字段值被複制時,字段引用的對象不會被複制,也就是引用的對象和原數據還是同一個,並沒有產生一個新的對象
深複製指對對象中字段引用的對象也進行複製的一種方式,會產生一個新的值相同的不同對象
python list怎麼copy
Python3裡面 List有 copy()方法
或者使用list[:]
a= [1,2,3]
b= a[:]
#實現複製
python3對於列表的 [:]和list.copy 有什麼區別?
我們日常所說的複製(自己在電腦硬盤上的複製)就是深複製(deepcopy),即將被複制對象完全再複製一遍作為獨立的新個體單獨存在。所以改變原有被複制對象不會對已經複製出來的新對象產生影響。
而淺複製(copy)並不會產生一個獨立的對象單獨存在,他只是將原有的數據塊打上一個新標籤,所以當其中一個標籤指向的數據塊就會發生變化,另一個標籤也會隨之改變。這就和我們尋常意義上的複製有所不同了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/187208.html