Скажем, у меня есть список вроде этого:
[a, b, c, d, e, f, g]
Как изменить этот список так, чтобы он выглядел так?
[a, b, c, def, g]
Я бы предпочел, чтобы он изменил существующий список напрямую, а не создал новый список.
Скажем, у меня есть список вроде этого:
[a, b, c, d, e, f, g]
Как изменить этот список так, чтобы он выглядел так?
[a, b, c, def, g]
Я бы предпочел, чтобы он изменил существующий список напрямую, а не создал новый список.
На каком основании должно произойти слияние? Ваш вопрос довольно расплывчатый. Кроме того, я предполагаю, что a, b,..., f должны быть строками, то есть 'a', 'b',..., 'f'.
>>> x = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> x[3:6] = [''.join(x[3:6])]
>>> x
['a', 'b', 'c', 'def', 'g']
Ознакомьтесь с документацией по типам последовательностей, в частности на изменяемые типы последовательностей. И, возможно, также в строковых методах.
Этот пример довольно расплывчатый, но может быть, что-то вроде этого?
items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
items[3:6] = [''.join(items[3:6])]
В основном он выполняет привязку (или присвоение срезу). Он удаляет элементы с 3 по 6 и вставляет вместо них новый список (в этом случае список с одним элементом, который является конкатенацией трех элементов, которые были удалены.)
Для любого типа списка вы можете сделать это (используя оператор +
для всех элементов независимо от их типа):
items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
items[3:6] = [reduce(lambda x, y: x + y, items[3:6])]
Это использует функцию reduce
с lambda
, которая в основном добавляет элементы вместе с помощью оператора +
.
просто вариация
alist=["a", "b", "c", "d", "e", 0, "g"]
alist[3:6] = [''.join(map(str,alist[3:6]))]
print alist
мои телепатические способности не особенно велики, но вот что я думаю, что вы хотите:
def merge(list_of_strings, indices):
list_of_strings[indices[0]] = ''.join(list_of_strings[i] for i in indices)
list_of_strings = [s for i, s in enumerate(list_of_strings) if i not in indices[1:]]
return list_of_strings
Я должен отметить, поскольку это может быть не очевидно, что это не то же самое, что предложено в других ответах.