В общем виде - никак, а конкретно для этого примера, где есть одинаковое чередование:
n= [['a','b','c'],1,2,['d','e','f'],3,4]
m=[]
for i in range (0, len(n), 3):
m+=[n[i]+[n[i+1]]+[n[i+2]]]
проход по списку с шагом три, на каждом шаге к новому списку добавляется элемент, представляющий собой список-соединение трёх элементов первого списка. Чтобы объединить список и числа, числа представлены как списки из одного элемента, то есть заключены в квадратные скобки.
PavelMos, Павел, а ни кто и не говорил, что нет одинакового чередования)) Вы правильно написали!
По правде говоря, я думал, что есть определенные синтаксические конструкции, типа как в Руби, но видимо ошибался.
Я хотел пойти через сравнение типов, типа если это инт до добавляем в ближайший к нему массив-список)
Master Ruby, в Руби есть понятие "ближайший" (слева) для списков ? Если нетрудно, можно показать как это выглядит ? Я пор руби только читал, но интересно посмотреть
Для интереса попробовал на произвольном списке , не все элементы копируются в новый
n= [['a','b','c'],1,2,4,5,['x','z','w'],6,7,['d','e','f'],8,9,10]
x = []
for i in range(len(n)):
if type(n[i]) is list:
x.append(n[i])
mark = len(x) - 1
elif type(n[i]) is int:
x[mark].append(i)
x
Out[234]:
[['a', 'b', 'c', 1, 2, 3, 4],
['x', 'z', 'w', 6, 7],
['d', 'e', 'f', 9, 10, 11]]
Master Ruby, да, только что сам увидел
пока разбирался, сделал так же, но немного по-другому
counterX=0
for i in range(len(n)):
#print (n[i])
if type(n[i]) is list:
x.append(n[i])
counterX+=1
#print (x)
elif type(n[i]) is int:
x[counterX-1].append(n[i])
# print (x)