Я хочу разбить список на различные подсписки. Список содержит два типа элементов: «цвета» и «идентификаторы цвета». Количество цветовых элементов между идентификаторами цветов варьируется:
colors = ['red', 'blue' ,'green', 'DocJ20031212doc1223', 'pink', 'yellow', 'DocNY20021212doc1212']
Я хочу, чтобы каждый подсписок содержал все цвета перед идентификатором цвета и идентификатором цвета. Я попытался добавить элементы в новый список, основанный на регулярном выражении, пробуя разные индексы и если / если не комбинации. После тщательного исследования, это лучшее, что я придумал:
colors_sorted = []
for i in colors:
if re.search("Doc[a-zA-Z 0-9]{16}",i) or len(colors_sorted) == 0:
colors_sorted.append([i])
else:
colors_sorted[-1].append(i)
print (colors_sorted)
Однако, это генерирует новый список, который начинается с color-ID, в то время как я хочу, чтобы color-ID был последним элементом каждый подсписок.
Мой вывод:
[['red', 'blue', 'green'], ['DocJ20031212doc1223', 'pink', 'yellow'], ['DocNY20021212doc1212']]