1

条件ベースで一つのリストから複数のリストを作りたい。

実際のデータ:

numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78]

期待される結果:

[1, 2, 3,4,5,6,7,8,9]
[1, 11, 12, 13]
[1, 21, 22, 25, 6]
[1, 34 ,5 ,6 ,7,78]

これが私の試みです:

list_number=[]
numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78]
for x in numbers:
    if x==1:
        list_number.append(numbers)

print list_number[0] 
4

2 に答える 2

5

オリジナルの新しい参照/コピーを に追加するのではなく、が表示されるたびに新しいものを開始するか、numbersそれ以外の場合は最新のものに追加します。listlist1

list_number = []
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34, 5, 6, 7, 78]
for x in numbers:
    if x==1:
        list_number.append([1])
    else:
        list_number[-1].append(x)

print list_number

結果:

>>> for x in list_number:
...     print x
...
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 11, 12, 13]
[1, 21, 22, 25, 6]
[1, 34, 5, 6, 7, 78]
于 2015-12-31T12:20:30.723 に答える
0

私の提案は 2 ステッパーです。最初にインデックスを見つけてから、一方から他方へ、最後から最後まで出力します。

 ones_index=[]
 numbers = [1, 2, 3,4,5,6,7,8,9, 1, 11, 12, 13, 1, 21, 22, 25, 6, 1, 34 ,5 ,6 ,7,78]
 for i,x in enumerate(numbers):
     if x==1:
         ones_index.append(i)

for i1,i in enumerate(ones_index):
     try:
         print numbers[i:ones_index[i1+1]]
    except:
         print numbers[i:] 
于 2015-12-31T12:35:05.857 に答える