2017-04-13 8 views
2

削除するには以前の答えリストからなしなし 私はタプルのリストを作成しています。(これだけタプルから削除しない

list(zip(*[iter(pointList)] *3)) 

ので、私が持っているもの

[(object1,object2,object3),(object4,object5,object6),(object7,None,None)] 

または

[(object1,object2,object3),(object4,object5,object6),(object7,object8,None)] 

であると私はタプルでどれを削除しないようにしたいですリストの最後のエントリで発生する可能性があります)。だから私の所望の出力は次のようになります。私は私を助けるだろうと思った何

[(object1,object2,object3),(object4,object5,object6),(object7)] 

または

[(object1,object2,object3),(object4,object5,object6),(object7,object8)] 

は次のとおりです。

filter(None,myList) 
+0

あなたが試したことを示すことができますか? – glibdud

+2

タプルは不変です - それらを変更することはできません。 – CodeCupboard

+0

私はそうでなければ私のリストを構築する必要がありますか? – greedsin

答えて

4

タプルは、あなたがタプルあなたを構築するので、一度不変ですの長さを変更するか、の要素をに設定することはできません。したがって、唯一のオプションは、新しいタプルを後処理ステップとして構成することです。または、最初にこれらのタプルを生成しないでください。

ポスト処理

は単にリスト内包文でtuple(..)コンストラクタと発電を使用します。

[tuple(xi for xi in x if xi is not None) for x in data] 

は私が梱包とアルゴリズム

を "梱包" を変更しますmのリストを変換することを意味しますnの項目をn「スライス」m要素(これは最初のコードの断片です)に入れます。

- 変数名のように - pointListの場合はです。あなたはzipを使用するという手間を省くことができ、

[tuple(pointList[i:i+3]) for i in range(0,len(pointList),3)] 

と直接動作します。最初はNoneのタプルを生成することはありません(postListにはもちろんNoneが含まれていないため)。

+0

:)聞こえていいです、私はこれを知りませんでした(Javaのバックグラウンドのみ)、私はこれを試してみます – greedsin

+0

ああ、私の問題を単純化したので、このdoesntの仕事のように見えます。 – greedsin

+0

@lolio: 'data'は' list(..) 'ステートメントの出力です。 –

関連する問題