函数返回元组。有时得到列表,有时会得到元组

时间:2017-04-03 03:47:18

标签: python list tuples

我写了一个函数来返回多个列表(至少一个)。它看起来如下:

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现在是一个元组而不是列表。我读了一些关于返回元组的解释。据说元组中的元素将被解压缩并自动分配。对于具有多个元素的返回元组,它可以工作。但是对于仅包含一个元素的元组,结果不会被解压缩。我对此感到困惑,希望有人能给我解释。

2 个答案:

答案 0 :(得分:2)

以下是一个示例,您应该可以使用它来修改代码并获得您之后的结果。

def retTup(x):
    return tuple(x)

a,b = retTup([[1,2,3],[4,5,6]])

这将给出:

a = [1,2,3]
b = [4,5,6]

现在,如果我这样做:

a = retTup([[1,2,3]])

我将获得 a

的元组
a = ([1,2,3],)

所以我将列表检索为:(注意逗号

a, = retTup([[1,2,3]])

现在:

a = [1,2,3]

根据需要。

答案 1 :(得分:0)

该方法只返回1个元素还是2个元素?或者该方法可以返回X多个元素吗?

您可以尝试将结果设置为变量,然后创建新的列表列表:

Content-Type

在这种情况下,+运算符执行追加操作,但由于POST没有返回值,因此不能在此处使用。

这应该适用于您返回results = get_stock_attributes_data() arranged_results = [] arranged_results = [arranged_results + element for element in results] 形式或append()形式的元组的情况。