相同屬性不相鄰問題
需求:有兩個list,分別為list1和list2。list1中有n個對象,每個對象有5個屬性,其中一個屬性是tid,要求list1按tid排序,相鄰的對象的tid不能重復,m為不重復的tid數量,m不確定。list2存放的是所有可能出現的tid的情況。
list1 = [task1,task2,task3…taskn]
list2 = [tid1,tid2,tid3…tidm] (m
神奇的local函數
python語言很好的幫我們解決了這個問題:利用locals內置函數動態創建變量。
locals函數在這里的作用:
- 1、根據傳遞的參數動態創建變量
- 2、根據傳遞的參數動態訪問變量
demo
defapart_program_by_task(list1,list2):list_all_pro=[]#動態創建m個list,命名為'list'+str(tidm)foriinlist2:locals()['list'+str(i)]=[]#拿到每個對象,獲取其tid的值,通過拼接變量名訪問對應的list,并把該對象加入該listforiinlist1:locals()['list'+str(i.tid)].append(i)#循環訪問m個list的每個list的頭元素,并刪除,然后加入list_all_prowhile1:flag=Falseforiinlist2:try:pro=locals()['lst'+str(i)].pop()list_all_pro.append(pro)flag=Trueexcept:passifflag==False:breakreturnlist_all_pro
這個demo中,我們可以很靈活的根據list2的長度動態創建len(list2)個list,然后根據拼接變量名訪問每個list,從而做到按tid歸類。
在回收所有的list時,我們也是通過拼接變量名挨個訪問每個list一次,取到頭元素加入新的list,來保證新的list中的相鄰對象的tid不相同。
更多
為什么locals函數可以動態創建和訪問變量,這里我們必須先介紹python的命名空間。
局部命名空間local:每個函數自己的命名空間,記錄函數的參數和局部變量。
全局命名空間global:每個模塊自己的命名空間,記錄了函數、類、導入的模塊的變量以及常量。
命令空間創建順序:
python解釋器啟動 ->創建內建命名空間 -> 加載模塊 -> 創建全局命名空間 ->函數被調用 ->創建局部命名空間
而locals的作用,就是以字典的形式,返回當前函數內變量名和變量值,比如:
deffunc(a=1):b=2print(locals())returna+bfunc()#{'b':2,'a':1}
這就可以解釋動態訪問變量的原理了,就像訪問字典一樣,比如我們要根據key訪問字典的值,只需要
dict={'b':2,'a':1}print(dict["b"])
所以,locals()[變量名]
即可動態訪問當前函數內的變量名,而locals()[“list101”] = [] 也可以動態創建數組,等價于 list101 = []
但是locals只能訪問所在函數內部的變量,且不可修改,要訪問全局變量or修改,則需要使用globals函數。
python的數據類型:1. 數字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數據類型,集合中可以放任何數據類型。5. 元組,元組用”()”標識,內部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數據組合。
看完上述內容,你們對如何在Python中使用locals函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注本站行業資訊頻道,感謝大家的支持。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖)在生活中,很多人都不知道HD7750這個顯卡怎么樣是什么意思,其實他的意思是非常簡單的,下面就是小編搜索到的HD7750這個顯卡怎么樣相關的一些知識,我們一起來學習下吧!藍寶石HD7750 1G GDDR5顯卡是一款主流性能級獨立顯卡,和GTX650的性能相當。性能方面,評測顯示HD7750已超過HD6770,看功耗,HD7750明顯低很多,能耗比很高。HD7750是28NM的架構,和老...
愛分享抖音點贊賺錢是真的嗎?目前來看,愛分享抖音點贊賺錢是不靠譜的,也就不完全真。在具體的操作中我們能發現這個操作和之前的網絡打字員、刷單員基本一致,即相關任務方其實就是靠著推廣出去來拉人頭賺錢,又或者是設定一百個人每天搶一個任務的方式來迷惑參與者。當然,在這個環節,真正賺錢的還是上層,我們普通人很難在中間獲利。抖音好幾百萬點贊怎么做到的?方法/步驟首先得有大量的粉絲,當別人關注你之后,你的視頻會...
1、首因效應是指最初接觸到的信息所形成的印象對我們以后的行為活動和評價的影響,實際上指的就是“第一印象”的影響。即人們根據最初獲得的信息所形成的印象不易改變,甚至會左右對后來獲得的新信息的解釋2、近因效應是指當人們識記一系列事 物時對末尾部分項目的記憶效果優于中間部分項目的現象。3、近因效應與首因效應相反,是指交往中最后- -次見面給人留 下的印象,這個印象在對方的腦海中也...