Python: разделить список на подсписки, каждый раз, когда элемент начинается с определенной подстроки - PullRequest
0 голосов
/ 04 декабря 2018

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

Скажем, у меня есть:

a = ['XYthe', 'cat' , 'went', 'XYto', 'sleep','XYtoday','ok']
b = 'XY'

И я хочу вернуть:

a1 = ['XYthe', 'cat', 'went']
a2 = ['XYto', 'sleep']
a3 = ['XYtoday', 'ok']

кто-нибудь может помочь?Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Используйте список понимания с , если / еще:

a = ['XYthe', 'cat' , 'went', 'XYto', 'sleep','XYtoday','ok']
b = 'XY'

# Use list comprehension
emp = []
[emp.append([i]) if i.startswith(b) else emp[-1].append(i) for i in a]

print(emp)
[['XYthe', 'cat', 'went'], ['XYto', 'sleep'], ['XYtoday', 'ok']]

print(emp[0])
['XYthe', 'cat', 'went']
0 голосов
/ 04 декабря 2018
a = ['XYthe', 'cat' , 'went', 'XYto', 'sleep','XYtoday','ok']
b = 'XY'

final_list = []
for word in a:
    if word.startswith(b):            # if the word starts with 'XY'...
        final_list.append([word])    # ...then make a new sublist
    else:
        final_list[-1].append(word)  # otherwise, add the word to the last sublist so far

print(final_list)
# [['XYthe', 'cat', 'went'], ['XYto', 'sleep'], ['XYtoday', 'ok']]

Если первый элемент a не содержит b, код вызовет IndexError.Это сделано намеренно - вы можете использовать его для проверки того, что a и b являются допустимыми входными данными для этого фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...