我有一个类似于( (Col1, x, x), (Col2, x, x), (Col3, x, x) )
的元组元组
我想将它转换为另一个看起来像(Col1, Col2, Col3)
的元组。
如何做到这一点?
我正在使用Python 2.7。谢谢。
答案 0 :(得分:5)
当您需要“转置”列表或类似内容时,请考虑zip
。试试这个:
a = ( ('Col1', 1, 11), ('Col2', 2, 22), ('Col3', 3, 33) )
print zip(*a)[0]
输出:
('Col1', 'Col2', 'Col3')
编辑更多细节:
*
运算符在Python中用于unpack argument lists。换句话说,上述zip(*a)
实际上转换为
zip(('Col1', 1, 11), ('Col2', 2, 22), ('Col3', 3, 33))
导致
[('Col1', 'Col2', 'Col3'), (1, 2, 3), (11, 22, 33)]
如果将其视为矩阵,它看起来像原始元组的转置。通过[0]
抓取压缩输出的第一个元素,从而得到所需的输出。
答案 1 :(得分:2)
tup_tuples = (("Col1", "x", "x"), ("Col2", "x", "x"), ("Col3", "x", "x") )
print tuple(first for first, _, _ in tup_tuples)
# ('Col1', 'Col2', 'Col3')
答案 2 :(得分:2)
尝试以下方法:
tuple(x[0] for x in big_tuple)
示例:
>>> big_tuple = ((0,1,1), (1,0,0), (2,3,3))
>>> tuple(x[0] for x in big_tuple)
(0, 1, 2)
>>>
答案 3 :(得分:1)
试试这个:
tuples = ( (Col1, x, x), (Col2, x, x), (Col3, x, x) )
filtered = tuple(t[0] for t in tuples)