たとえば、ループしているリストのサンプルを次に示します。['n'、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15 16、17、18、19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、'n'、'n '、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、 'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n '、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、82、83、84、85、86、87、88、' n '、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、'n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n'、' n ' 、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'n'、'' n'、' n'、' n'、 178、179、180]
このリストは、以前に呼び出された関数から生成されます(不要な値を非表示にするためにnが挿入されています)。
nで区切られた番号をグループ化してリストに送信しようとしています。たとえば、1-37->リストに入れ、82-88->別のリスト、178-180->送信します。別のリストに。
トリッキーな部分は、リスト内に常に同じデータセットが含まれるとは限らないことです。「グループ」は任意のサイズと場所にすることができます。唯一の明確な特徴は、それらがnで区切られていることです。
これまでの私の試み:
for i in range(0, len(lists)):
for index, item in enumerate(lines):
if item != 'n': #if item is not n send to list
lists[i].append(item)
elif lines[index+1] == 'n':#if the next item is an n
del lines[:index]
'lists'は実際にはこの関数の外部で作成されたリストのリストですが、各グループを格納するために、リストの数は格納する必要のあるグループの数によって決まります。
'lines'は、ループしたい値のリストです。
私の論理では、最初のリストに「n」以外のすべての値が追加されます。次の値がnの場合は、前のすべての値を削除して新しいリストをループし、次の値のセットを次のリストに入れます。すぐ。
私が得ることを除いて:範囲外のリストインデックス
私は理解していますが、それをハックする方法があることを望んでいました。また、elifでループを解除しようとしましたが、中断したところからループを続行できません。私の最後の試みは、次のように最初の実行後に設定された場所でループを再開することでした。
place=0
for i in range(0, len(lists)):
for index, item in enumerate(lines[place:]):
if item != 'n': #if item is not n send to list
lists[i].append(item)
elif lines[index+1] == 'n':#if the next item is an n
place=[index]
break
スライスインデックスは整数またはNoneであるか、インデックスメソッドを持っている必要があります
それがはっきりしていることを願っています、誰かが手を貸すことができますか?