Python3中的map函數(shù)調(diào)用后內(nèi)存釋放問(wèn)題
Python3 map函數(shù)調(diào)用后內(nèi)存釋放
首先看一下map函數(shù)的運(yùn)行規(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)
運(yùn)行結(jié)果: 只有對(duì)map的結(jié)果a做了調(diào)用(list)才會(huì)對(duì)date做處理
{‘age’: 15, ‘name’: ‘lili’, ‘sex’: ‘girl’}
{‘age’: 15}
由此當(dāng)對(duì)map結(jié)果多步處理時(shí),處理完第一步時(shí)由于內(nèi)存釋放所造成進(jìn)一步的問(wèn)題
例子:
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)
運(yùn)行結(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的說(shuō)法
使用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ù)
必須要這樣寫(xiě):
lst_1=[1,2,3,4,5,6] lst_2=map(lambda x:x*2,lst_1) print(list(lst_2)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何利用Python獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作
這篇文章主要為大家詳細(xì)介紹了如何使用python實(shí)現(xiàn)獲取鼠標(biāo)在屏幕上的具體位置以及動(dòng)作,從而判斷鼠標(biāo)是否在瀏覽器內(nèi),感興趣的小伙伴可以了解下2025-03-03
Python實(shí)現(xiàn)雙向RNN與堆疊的雙向RNN的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)雙向RNN與堆疊的雙向RNN,文中詳細(xì)講解了雙向RNN與堆疊的雙向RNN的原理及實(shí)現(xiàn),需要的可以參考一下2022-07-07
Python datetime時(shí)間格式化去掉前導(dǎo)0
Python datetime時(shí)間格式化去掉前導(dǎo)0,在format string的%與flag之間,添加一個(gè)“-”即可2014-07-07
Python中八種數(shù)據(jù)導(dǎo)入方法總結(jié)
數(shù)據(jù)分析過(guò)程中,需要對(duì)獲取到的數(shù)據(jù)進(jìn)行分析,往往第一步就是導(dǎo)入數(shù)據(jù)。導(dǎo)入數(shù)據(jù)有很多方式,不同的數(shù)據(jù)文件需要用到不同的導(dǎo)入方式,相同的文件也會(huì)有幾種不同的導(dǎo)入方式。下面總結(jié)幾種常用的文件導(dǎo)入方法2022-11-11
Python中FastAPI項(xiàng)目使用 Annotated的參數(shù)設(shè)計(jì)的處理方案
FastAPI 是一個(gè)非常現(xiàn)代化和高效的框架,非常適合用于構(gòu)建高性能的 API,FastAPI 是一個(gè)用于構(gòu)建 API 的現(xiàn)代、快速(高性能)web 框架,基于 Python 類(lèi)型提示,這篇文章主要介紹了Python中FastAPI項(xiàng)目使用 Annotated的參數(shù)設(shè)計(jì),需要的朋友可以參考下2024-08-08

