2016-07-03 16 views
1

私はmylistというリストのリストを持っています。それぞれのリストから最初の要素を取り出し、タプルを作成します。リストのリストからすべてのn個の要素に対してこれを実行したい。リストの各リストからインデックスiを持つ新しいタプルを作成する

mylist = [[1,2,3], ['a', 'b', 'c'], [5, 8, 10], [100, 200, 30]] 

私は、以下の手順でそれを行うために管理していると私は、このリンクが、避難所」を見てきたより良い方法:)

i = 0; 
while(i < n): 
    templist = (x[i] for x in mylist) 
    newlist.append(tuple(templist)) 
    i += 1 
ftuple = tuple(newlist) 

があると確信しています

mytuple = ((1,'a', 5, 100) ,(2,'b', 8, 200), (3,'c',10, 30)) 

に変換それを見やすい方法を見つけることができました SOlink1Solink2

+2

これらのリンクの両方が必要な正確なソリューションを持っています。 –

答えて

3

zipは何が必要です:

>>> mylist = [[1,2,3], ['a', 'b', 'c'], [5, 8, 10], [100, 200, 30]] 
>>> zip(*mylist) # In Python 3.x, this returns an iterator instead of a list 
[(1, 'a', 5, 100), (2, 'b', 8, 200), (3, 'c', 10, 30)] 
>>> tuple(zip(*mylist)) 
((1, 'a', 5, 100), (2, 'b', 8, 200), (3, 'c', 10, 30)) 
+0

素早くお返事ありがとうございます - それを感謝してください! – oneday

1

あなたは、このためのパンダのデータフレームを使用することができます。まったく同じ形での解決のために

import pandas as pd 

mylist = [[1,2,3], ['a', 'b', 'c'], [5, 8, 10], [100, 200, 30]] 

df = pd.DataFrame(mylist).transpose() 

print(df.values) 
array([[1, 'a', 5, 100], 
     [2, 'b', 8, 200], 
     [3, 'c', 10, 30]], dtype=object) 

tuple([tuple(row) for row in df.values]) 
((1, 'a', 5, 100), (2, 'b', 8, 200), (3, 'c', 10, 30)) 
関連する問題