Python将元组列表转换为单元组

时间:2017-03-24 02:29:48

标签: python django list

有没有办法将元组列表转换为单个元组?我从cursor.fetchall()收到了一个元组列表,但是想把它变成一个单元组:

curr_table_columns = cursor.fetchall()

例如:

[(u'w_id',), (u'w_name',), (u'w_street',)]

变为

[(u'w_id', u'w_name', u'w_street')]

4 个答案:

答案 0 :(得分:3)

With itertools.chain,这是微不足道的。 from itertools import chain您可以执行以下任一操作:

[tuple(chain.from_iterable(curr_table_columns))]

或:

[tuple(chain(*curr_table_columns))]

前者是长期或无限可迭代输入的首选(尽管不要在tuple包裹无限制!);对于小输入(特别是已经是listtuple的输入),后者稍慢,但很好。任何一个都要比genexpr快得多,并且根据任何大小的输入进行索引。

答案 1 :(得分:2)

试试这个:

a=[(u'w_id',), (u'w_name',), (u'w_street',)]

print [tuple([i[0] for i in a])]

输出:

[(u'w_id', u'w_name', u'w_street')]

答案 2 :(得分:2)

效率不高*,但很简单:

>>> ts = [(u'w_id',), (u'w_name',), (u'w_street',)]
>>> sum(ts, ())
('w_id', 'w_name', 'w_street')

所以,如果你必须将它包装在一个列表中:

>>> result = [sum(ts, ())]
>>> result
[('w_id', 'w_name', 'w_street')]

*警告:按比例缩放。有些人可能倾向于滑动以将某些列名称连接到单个容器中。绝对不要试图以这种方式处理数百万个元组。

使用itertools解决方案进行线性时间。

答案 3 :(得分:0)

此函数可以将listWidgets项转换为单个元组,也可以将多个元组元素转换为单个元组:用于Sqlite3和来自listwidgets的数据查询。

def tuple_converter(self,item):
        target = ''
        for i in item:
            target += i + " " 
        target = target.rstrip()
        target = tuple(target.split(","))
        return target
#syntax  name = tuple_converter(tuple((item).split()))

'''