Как разбить строку с указанием символа c на python во вложенном списке? - PullRequest
1 голос
/ 05 августа 2020

У меня есть вложенный список с некоторыми строками. Я хочу разделить строки с помощью символа '-' в нечетном интервале, как показал мой результат. Я видел этот вопрос . Но мне это не помогло.

mylist= [['1 - 2 - 3 - 4 - 5 - 6'],['1 - 2 - 3 - 4']]

myresult = [[['1 - 2'] , ['3 - 4'] , ['5 - 6']],[['1 - 2] ,[ 3 - 4']]]

Ответы [ 3 ]

3 голосов
/ 05 августа 2020

Попробуйте следующее:

res = []
for x in mylist:
    data = list(map(str.strip, x[0].split('-')))
    res.append([[' - '.join(data[y * 2: (y + 1) * 2])] for y in range(0, len(data) // 2)])
print(res)

Вывод:

[[['1 - 2'], ['3 - 4'], ['5 - 6']], [['1 - 2'], ['3 - 4']]]
1 голос
/ 05 августа 2020

понимание списка:

[[[" - ".join(item)] for item in zip(*[iter(sub.split(" - "))]*2)] for l in mylist for sub in l]

Были ли некоторые изменения по сравнению с Как работает zip (* [iter (s)] * n) в Python?

1 голос
/ 05 августа 2020

Если вы предпочитаете однострочное решение, вот оно!

res = [[[s] for s in map(' - '.join,
                         map(lambda x: map(str, x),
                             zip(x[::2], x[1::2])))]
       for lst in mylist for x in (lst[0].split(' - '),)]
...