Как пропустить пустую подстроку при разбиении списка на подсписок на основе разделителя символов - PullRequest
3 голосов
/ 03 февраля 2020

У меня есть следующий список

list_big = ['90', '=', 'C', '44', '=']

Мой желаемый вывод - объединить все строки между инцидентами '=', вот так:

list_smaller = ['90', 'C44']

Я запускаю:

list_smaller = [l.split(',') for l in ','.join(list_big).split('=')]

но я получаю:

list_smaller = [['90', ''], ['', 'C', '44', ''], ['']]

как я могу получить желаемый результат?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2020

Вы можете использовать следующий список-понимание; объединение с пустой строкой, а не запятой, а затем только помещение в список элементов, которые не являются пустой строкой, используя if l.

>>> [l for l in ''.join(list_big).split('=') if l]
['90', 'C44']
2 голосов
/ 03 февраля 2020

Это потому, что вы присоединяете строку к ',', если удаляете, с вами все будет в порядке:

list_smaller = [i for i in ''.join(list_big).split('=') if i]

Попытайтесь разделить ваш список в следующий раз, чтобы вы могли видеть, что происходит:

list_big = ['90', '=', 'C', '44', '=']
joined_list_big = ','.join(list_big).split('=')
joined_list_big
['90,', ',C,44,', '']

Здесь видно, что это не то, что вы хотели

1 голос
/ 03 февраля 2020

Вы можете использовать для l oop:

new_list = []

aux = ''
for item in list_big:
    if item != '=':
        aux += item
    else:
        new_list.append(aux)
        aux = ''

if aux:
    new_list.append(aux)

print(new_list)

выход:

['90', 'C44']
...