我寫一個函數返回多個列表(至少一個)。它看起來象下面這樣:函數返回元組。有時會得到列表,有時會得到元組
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