list = [('a5', 1), 1, ('a1', 1), 0, 0]
2番目または3番目の要素がリストにない場合、リストの要素を3つにグループ化したい場合は、対応する場所に「なし」を追加する必要があります。Pythonのグループ化リスト要素
exepected_output = [[('a5', 1), 1,None],[('a1', 1), 0, 0]]
これのためのpythonic方法はありますか?これに新しく、どんな提案も役に立つでしょう。
list = [('a5', 1), 1, ('a1', 1), 0, 0]
2番目または3番目の要素がリストにない場合、リストの要素を3つにグループ化したい場合は、対応する場所に「なし」を追加する必要があります。Pythonのグループ化リスト要素
exepected_output = [[('a5', 1), 1,None],[('a1', 1), 0, 0]]
これのためのpythonic方法はありますか?これに新しく、どんな提案も役に立つでしょう。
あなたが望む結果を得るための唯一の方法は、リストをループして、タプルに遭遇したときに検出することです。動作するはず
例:
temp = None
result = []
for item in this_list:
if type(item) == tuple:
if temp is not None:
while len(temp) < 3:
temp.append(None)
result.append(temp)
temp = []
temp.append(item)
編集:誰かが正しくコメントとして、変数リストに名前を付けていない、あなたはリスト機能に組み込まれて上書きすることでしょう。例の名前を変更しました。
最後のtempは結果に追加されません。 OPが実際にあなたに良いテストケースを与えるまれなケースでは、それを使用してください!あなたが答えを投稿する前にすることをお勧めします。 :) expected_output = [[( 'a5'、1)、1、None]、[( 'a1'、1)、0、0]]アサート(結果== expected_output) –
ここでは、各要素のタイプを比較し、元のリストをチャンクに分割するという、他の回答とは少し異なるアプローチです。
li = [('a5', 1), 1, ('a1', 1), 0, 0]
for i in range(0, len(li), 3):
if type(li[i]) is not tuple:
li.insert(i, None)
if type(li[i+1]) is not int:
li.insert(i+1, None)
if type(li[i+2]) is not int:
li.insert(i+2, None)
print [li[i:i + 3] for i in range(0, len(li), 3)]
第2または第3の要素が欠落しているかどうかをどのように知っていますか? – depperm
ここではどのように分割[リストをチャンクに](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evene-sized-chunks) –
便利な脇に - このデータはどこから*得るのですか?ネイティブ状態から探している状態にデータを戻すためのより良い方法がある可能性は非常に高いです。 –