2016-05-22 9 views
2

タプルがある場合、 x = (1, 2, 3)という名前のタプルのタプルの各タプルの前にそれぞれの要素を追加したいとします。 y = (('a', 'b'), ('c', 'd'), ('e', 'f'))最終的な結果はz = ((1, 'a', 'b'), (2, 'c', 'd'), (3, 'e', 'f'))です。最も簡単な方法は何ですか?Pythonのタプルのタプルにタプル要素を追加する

私の最初の考えはzip(x,y)でしたが、それは((1, ('a', 'b')), (2, ('c', 'd')), (3, ('e', 'f')))を生成します。

答えて

2

使用zipと結果フラット化:

>>> x = (1, 2, 3) 
>>> y = (('a', 'b'), ('c', 'd'), ('e', 'f')) 
>>> tuple((a, b, c) for a, (b, c) in zip(x,y)) 
((1, 'a', 'b'), (2, 'c', 'd'), (3, 'e', 'f')) 

または、あなたは、Python 3.5を使用している場合に、スタイルでそれを行う:

>>> tuple((head, *tail) for head, tail in zip(x,y)) 
((1, 'a', 'b'), (2, 'c', 'd'), (3, 'e', 'f')) 
2
tuple((num,) + other for num, other in zip(x, y)) 

それとも

from itertools import chain 

tuple(tuple(chain([num], other)) for num, other in zip(x, y)) 
+0

私はチェーン版には何のメリットもありません。 –

+0

@AlexHallそれはレコードの別のオプションです。 –

関連する問題