【導語】:必須現(xiàn)在需要動態(tài)創(chuàng)建16個list,每個list的名字不一樣,但是是有規(guī)律可循,比如第一個list的名字叫:arriage_list_0=[],第二個叫arriage_list_1=[]……..依次類推,但是我又不想手動的去寫16個這樣的名字,太累了,而且增加了代碼的冗余性,靈活性也不強,所以有沒有一種方法是能動態(tài)創(chuàng)建list名稱的呢?答案是有的!而與之對應,既然要對上面的列表動態(tài)操作,肯定是少不了動態(tài)去解析list名稱。所以下面開始介紹方法。
一、python 動態(tài)生成變量名 —— locals()
代碼之前,先介紹一個函數(shù):
locals() 函數(shù)會以字典類型返回當前位置的全部局部變量。
# 兩個局部變量:arg、z
def runoob(arg):
z = 1
print(locals())
runoob(4)
結果:{'arg': 4, 'z': 1}
下面動態(tài)創(chuàng)建名字為list_0到list_15的16個list列表:
def test_list_pre():
prepare_list = locals()
for i in range(16):
prepare_list['list_' + str(i)] = []
prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '個list')
print(prepare_list['list_0'])
print(prepare_list['list_1'])
print(prepare_list['list_2'])
print(prepare_list['list_3'])
if __name__ == '__main__':
test_list_pre()
結果:
['我是第0個list']
['我是第1個list']
['我是第2個list']
['我是第3個list']
實際證明,已經(jīng)動態(tài)的每次往list插入了值
二、動態(tài)獲取變量的變量名
如果有了上面的動態(tài)命名list,那么當動態(tài)獲取變量的變量名,就需要如下的操作:
利用python原生的inspect庫來實現(xiàn)
def get_variable_name(variable):
callers_local_vars = inspect.currentframe().f_back.f_locals.items()
return [var_name for var_name, var_val in callers_local_vars if var_val is variable]
if __name__ == '__main__':
prepare_list = locals()
for i in range(16):
prepare_list['list_' + str(i)] = []
prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '個list')
a = get_variable_name(prepare_list['list_0']).pop()
b = get_variable_name(prepare_list['list_1']).pop()
print(a)
print(b)
結果:
list_0
list_1
希望本文的內容對大家的學習或者工作能帶來一定的幫助,每天進步一點點,加油。