2016-09-16 3 views
0

私は、Pythonでトリプルタプルリストに格納された変数にアクセスしようとしていますが、私はそれを行う方法がわかりません。私はforループのリストを調べて、各タプルからx​​、y、x、& pを得ることができるようにしたいと思います。どうすればいい?[[[x、y]、z]、p]のようなトリプルタプルリストを分離/アクセスしますか?

MovesList = [ [[[1,2],3],1] , [[[2,5],3],1] , [[[1,3],0],2] ] 

答えて

3

あなたがそれらを反復としてあなたはタプルを解凍することができます

をPythonの2:

>>> for ((x,y),z),p in MovesList: 
...  print x, y, z, p 

のPython 3:

になり、どちらも
>>> for ((x,y),z),p in MovesList: 
...  print(x,y,z,p) 

1 2 3 1 
2 5 3 1 
1 3 0 2 
+0

良い。いくつかのpython 3に準拠したコードを投稿してもよろしいですか? –

+0

@ Jean-FrançoisFabreには、一度に1つずつ移動リストから移動する方法があります:var 'x、y、z、p = MovesList [0]' whileループを通過できるように 'while(MovesList [0]!= Null): 'リストが空でx、y、z、&pにアクセスするまでは? –

+0

@NickZulanasなぜwhileループを使いたいのですか? 'for'ループは' MovesList'の各 'move'を繰り返します。それはあなたが望むものでなければなりません。あなたのコメントで提供したコードは有効なPythonではなく、実際には 'MovesList'の' move'を反復処理することはできません。あなたが望むものを明確にする必要があるかもしれません。 – FamousJameous

0

リスト内包

In [202]: [[x,y,z,p] for ([[x,y],z],p) in MovesList] 
Out[202]: [[1, 2, 3, 1], [2, 5, 3, 1], [1, 3, 0, 2]] 
0

で開梱同じ私はまた、あなたがそうのようなwhileループを通してそれを置くことによって、有限のスペースを持っていないタプルのリストを展開することができますが見つかりました:

Mylist = list() 
MyOtherList = list() 
//list is packed my tuples of four {(a,b,c,d),(a,b,c,d),(a,b,c,d),...} 
While MyList[0] != Null: 
    var w = MyList[0][0] 
    var x = MyList[0][1] 
    var y = MyList[0][2] 
    var z = MyList[0][3] 
    MyList.Remove(w,x,y,z) 
    //do something with w,x,y,z based upon use 
    MyOtherList = getMoreListItems(w,x,y,z) 
    MyList.extend(MyOtherList) 

これは、反復したいリストが同じサイズのタプルでいっぱいの場合に使用できます

関連する問題