我写一个函数返回多个列表(至少一个)。它看起来象下面这样:函数返回元组。有时会得到列表,有时会得到元组
def get_stock_atrributes_data(stock, attrList):
dbClient = MongoClient()
db = dbClient.StockAnnual
#only query the data we need
query = {attr: 1 for attr in attrList}
#exclude id
query['_id'] = 0
cursor = db[stock].find({}, query).sort([('date', pymongo.ASCENDING)])
#tranform cursor to list so it becomes iterative
l = list(cursor)
res = []
for attr in attrList:
res.append([d[attr] for d in l])
return tuple(res)
为了做到这一点,我使用的元组,所以我可以用
list1, list2 = get_stock_atrributes_data()
查询由attrList
确定多个属性列表。当我返回多个列表(多于一个)时,它工作得很好。但是,如果我只返回一个列表,其结果是包含一个列表中的元组,例如:
list1 = get_stock_atrributes_data()
的list1
是一个元组,而不是一个列表了。我读了一些关于返回元组的解释。据说元组中的元素将被自动解包和分配。对于具有多个元素的返回元组,它可以工作。但是对于只包含一个元素的元组,结果不会被解压缩。我很困惑,希望有人能给我解释。
很好的答案,但请强调逗号。 –
嗨,它解决了问题!你能帮我解释为什么一个简单的逗号可以解决这个问题吗? – dashenswen
函数总是返回一个元组,所以如果你真的对元组的元素感兴趣,你必须直接访问它们。当您使用逗号时,它会访问元组的第一个(也是唯一)元素。 – Robbie