Python: Как разрезать список по типу переменной - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь разрезать список на список списков, при этом исходный список нарезается в точке, где обнаруживается объект строкового типа, например, от

array = ['Hello',1,2,3,'Goodbye',4,6,'Bye',7,8,9,5]

до

new_array = [['Hello',1,2,3],['Goodbye',4,6],['Bye',7,8,9,5]]

Как этого достичь?

1 Ответ

1 голос
/ 27 мая 2020

Для этого можно использовать функцию генератора, например:

def gen(arr):
    r = []
    for el in arr:
        if r and isinstance(el, str):
            yield r
            r = []
        r.append(el)
    if r:
        yield r

>>> list(gen(array))
[['Hello', 1, 2, 3], ['Goodbye', 4, 6], ['Bye', 7, 8, 9, 5]]
...