Python3中的map函數(shù)調(diào)用后內(nèi)存釋放問題
Python3 map函數(shù)調(diào)用后內(nèi)存釋放
首先看一下map函數(shù)的運行規(guī)則
date = {'age': 15, 'name': 'lili', 'sex': 'girl'} delete_module = ['name', 'sex'] a = map(lambda x: date.pop(x), delete_module) print(date) p = list(a) print(date)
運行結(jié)果: 只有對map的結(jié)果a做了調(diào)用(list)才會對date做處理
{‘age’: 15, ‘name’: ‘lili’, ‘sex’: ‘girl’}
{‘age’: 15}
由此當(dāng)對map結(jié)果多步處理時,處理完第一步時由于內(nèi)存釋放所造成進一步的問題
例子:
import pandas as pd d = {'p': {'a': [1, 2, 3, 4], 'b': [4, 5, 6, 7]}} p = map(lambda x: d['p'], d) print(list(p)) a = map(lambda r: r['a'], p) print(list(a)) b = map(lambda x: x['b'], p) list(b)
運行結(jié)果 當(dāng)list§后,p所保留的數(shù)據(jù)也就釋放了
[{‘a’: [1, 2, 3, 4], ‘b’: [4, 5, 6, 7]}]
[]
[]
import pandas as pd import numpy as np d = {'p': {'a': [1, 2, 3, 4], 'b': [4, 5, 6, 7]}} p = map(lambda x: d['p'], d) a = map(lambda r: r['a'], p) print(list(a)) b = map(lambda x: x['b'], p) list(b)
[[1, 2, 3, 4]]
[]
解決方法:
目前只想到了深拷貝的方法
import pandas as pd import numpy as np import copy d = {'p': {'a': [1, 2, 3, 4], 'b': [4, 5, 6, 7]}} p = map(lambda x: d['p'], d) x=copy.deepcopy(p) a = map(lambda r: r['a'], p) print(list(a)) b = map(lambda y: y['b'], x) list(b)
python3 map函數(shù)
按照crossin的說法
使用map函數(shù)可以直接輸出列表
>>> list1 = [ 0, 1, 2, 3, 4, 5, 6 ] >>> list2 = map(lambda x:x*2,l1)
結(jié)果應(yīng)為:
>>> print(list2)
[0,2,4,6,8,10,12]
但應(yīng)用于python3
輸出的結(jié)果并非如此,而是這樣的:
<map object at 0x00000000021DA860>
所以要使用map函數(shù)
必須要這樣寫:
lst_1=[1,2,3,4,5,6] lst_2=map(lambda x:x*2,lst_1) print(list(lst_2)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python獲取網(wǎng)絡(luò)圖片和視頻的示例代碼
Python 是一種多用途語言,廣泛用于腳本編寫。我們可以編寫Python 腳本來自動化日常事務(wù)。本文將用Python實現(xiàn)獲取Google圖片和YouTube視頻,需要的可以參考一下2022-03-03Python用tkinter實現(xiàn)自定義記事本的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python用tkinter實現(xiàn)自定義記事本的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03使用python-pptx包批量修改ppt格式的實現(xiàn)
今天小編就為大家分享一篇使用python-pptx包批量修改ppt格式的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02