[英]Python convert list of tuples into single tuple
有沒有一種方法可以將元組列表轉換為單個元組? 我已經從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')]
使用itertools.chain
,這很簡單。 from itertools import chain
,您可以執行以下任一操作:
[tuple(chain.from_iterable(curr_table_columns))]
要么:
[tuple(chain(*curr_table_columns))]
對於長的或無界的可迭代輸入,首選前者(盡管對於無界的輸入,不要包裹在tuple
中!); 對於較小的輸入(尤其是已經是list
或tuple
),后者稍微慢一些,但很好。 任一種都將比genexpr快得多,並且可以為任何大小的輸入建立索引。
嘗試這個:
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')]
沒有效率*,但是很簡單:
>>> 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
解決方案來解決線性時間問題。
該函數可以將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()))
'''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.