如何在Python中的列表中存储列表名称?
我需要将六个列表组合成一个大列表。如果六个列表中的任何列表为空,那么我想添加空括号"()"到最后一个大清单,表明一个空列表。
这是我尝试的但是它没有工作,因为我将列表名称存储为masterList中的字符串,
// read data from file and split it by '\n', each line contains a data like `SomeName,SomeValue`
var file = cat('/data.csv');
var data = file.split('\n');
// check if we have such records
for (var i = 0; i < data.length; i++) {
var nameAndValue = data[i].split(',');
printjson(db.YouDB.findOne({"name": nameAndValue[0]}));
}
// update records
for (var i = 0; i < data.length; i++) {
var nameAndValue = data[i].split(',');
printjson(db.YouDB.update({"name": namesAndValue[0]}, {$set:{"value":nameAndValue[1]}}));
}
这会产生以下输出:
masterList=["primaryP","primaryG","primaryAin","primaryAout","primaryDin","primaryDout"]
primaryP=['VDD']
primaryG=['VSS']
primaryAin=[]
primaryAout=[]
primaryDin=['A', 'X', 'M', 'SEL']
primaryDout=['Y']
for item in masterList:
if item==[] :
item=["()"]
else:
item=' '.join(item)
item=[item]
CSRPGPrimary=primaryP+primaryG+primaryAin+primaryAout+primaryDin+primaryDout
print("CSRPGPrimary=", CSRPGPrimary)
但是,我想要的输出是
('CSRPGPrimary=', '//PG PRIMARY ("VDD") ("VSS") ("A") ("X") ("M") ("SEL") ("Y")')
任何输入?
答案 0 :(得分:3)
你很亲密,这就是你想要的:
masterList=[primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]
CSRPGPrimary = ['("'+' '.join(item)+'")' if item else '()' for item in masterList]
请注意,在for
循环中,修改item
不会修改列表内容,只会重新分配引用。 (item
指向列表的元素,然后你只是指向其他东西,它对列表本身没有任何作用)
答案 1 :(得分:2)
CSRPGPrimary = []
primaryP=['VDD']
primaryG=['VSS']
primaryAin=[]
primaryAout=[]
primaryDin=['A', 'X', 'M', 'SEL']
primaryDout=['Y']
masterList=[primaryP,primaryG,primaryAin,primaryAout,primaryDin,primaryDout]
for item in masterList:
if item:
CSRPGPrimary.append( "(" + ' '.join(item) + ")" )
else:
CSRPGPrimary.append("()")
print("CSRPGPrimary=", CSRPGPrimary)
CSRPGPrimary= ['(VDD)', '(VSS)', '()', '()', '(A X M SEL)', '(Y)']
答案 2 :(得分:1)
为什么要存储列表名称而不是列表本身?
masterList = [primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]
此外,打印值可能更容易,而不是修改循环中的项目。这应该可以为您提供所需的输出。
答案 3 :(得分:1)
您的代码中未更改主列表值。
primaryP = ['VDD']
primaryG = ['VSS']
primaryAin = []
primaryAout = []
primaryDin = ['A', 'X', 'M', 'SEL']
primaryDout = ['Y']
masterList = [primaryP, primaryG, primaryAin, primaryAout, primaryDin, primaryDout]
for i in range(0, len(masterList)):
if len(masterList[i]) == 0:
masterList[i] = ["()"]
else:
masterList[i] = ' '.join(masterList[i])
masterList[i] = ["(" + masterList[i] +")"]
CSRPGPrimary = masterList[0] + masterList[1] + masterList[2] + masterList[3] + masterList[4] + masterList[5]
#primaryP + primaryG + primaryAin + primaryAout + primaryDin + primaryDout
print("CSRPGPrimary=", CSRPGPrimary)
答案
CSRPGPrimary= ['(VDD)', '(VSS)', '()', '()', '(A X M SEL)', '(Y)']