Обратная функция join

Есть код:

from random import randrange as rnd

a = [rnd(10) for x in range(50)]

print a

print ''.join(map(str,a))

a = ''.join(map(str,a))
c = []
print a.split('0')
c = a.split('0')

if len(c) > 2:
	b = []
	b.append(c[0])
	b.append(c[-1])
	print b
if len(c) == 2:
	q = []
	q.append(c[-1])
	print q
if len(c) < 2:
	print a


Задача, чтобы удалял часть списка между думя 0. Если 0 один, то удалять часть списка до этого 0. Если 0 нет, то ничего не изменять. Мой код это скорее какое-то извращение и решение тут намного проще, но все же.
На выходе я получаю список обработанный функцией join. Интересует, как привести список к начальному виду, когда уже задача будет выполнена.
Т.е. начальный список выглядит вот так [1,5,2,6,7.....8]
А мой конечный на данный момент выглядит вот так [ '123554662', '34531'].
  • Вопрос задан
  • 3238 просмотров
Решения вопроса 2
@DuD
Попробуйте использовать вот такую функцию, она далеко не идеальна, но задачу вашу решит.

def mergelist(lst):
    all=''
    for item in lst:
        all += str(item)
    return list(all)
Ответ написан
@leclecovich
Вы усложняете задачу. Проще использовать метод index(...) для list. Почитать можно здесь. А вот рабочий код:
from copy import copy


def process_list(target_list, value):
    try:
        first_index = target_list.index(value)
        try:
            second_index = target_list.index(value, first_index + 1)
            # Both indexes were found, cropping the 'middle' of the list
            return target_list[:first_index + 1] + target_list[second_index:]
        except ValueError:
            # Only the first index was found, cropping the 'begining' of the list
            return target_list[first_index:]
    except ValueError:
        # Nothing was found, returning the copy of original list
        return copy(target_list)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы