2016-08-04 4 views
2

私がしようとしているのは、リスト内の0番目の要素と、指定された2次元リストの別のリストの最初の要素を抽出することです。Python:これは単一のリスト理解文で行うことができます

baseball = [[180, 78.4], 
      [215, 102.7], 
      [210, 98.5], 
      [188, 75.2]] 

x = [ a[0] for a in baseball ] 
y = [ a[1] for a in baseball ] 
print x 
print y 

これは単一のリスト理解文で行うことができますか?次に、あなたの問題は(x, y = transpose(baseball))を移調するだけの呼び出しです

def transpose(matrix): 
    return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))] 

:それは、長方形(すなわち、内側のリストの長さが一致している)、あなたは以下を実装することができますと仮定

答えて

2

+0

ありがとうございました – Athar

2

あなたはタプルを気にしない場合:

baseball = [[180, 78.4], 
      [215, 102.7], 
      [210, 98.5], 
      [188, 75.2]] 


x,y = zip(*baseball) 

あなたが本当にリストが必要な場合:

x,y = map(list,zip(*baseball)) 

あなたは、それぞれに二つ以上の要素を持っていたなどだけで特定の要素たい場合:

baseball = [[180, 1, 78.4], 
      [215, 2, 102.7], 
      [210, 3, 98.5], 
      [188, 4, 75.2]] 

from operator import itemgetter 

x, y = zip(*map(itemgetter(0, 2), baseball)) 

それはあなたに与えるでしょう:

((180, 215, 210, 188), (78.4, 102.7, 98.5, 75.2)) 
+0

標準警告: 'zip(* baseball)'は 'baseball'が空であればあなたが探している転置を行いません。 – user2357112

+0

ありがとう、完璧に働いていましたが、リストの理解を使って解決策を探していました – Athar

関連する問題