В исходном коде есть несколько проблем:
sequences = ["A","B","A","A","B"]
lista = sequences
lista.pop(0)
print(lista)
for x in range(sequences):
mc =sequences[x]+lista[x]
Во-первых, оператор lista = sequences
не делает копию последовательностей. Вместо этого lista
и sequences
становятся двумя разными именами для одного и того же списка. То, что вы делаете, используя одно имя, происходит и с другим. lista.pop(0)
совпадает с sequences.pop(0)
. Если вам нужна копия, импортируйте библиотеку copy
.
import copy
sequences = ["A","B","A","A","B"]
lista = copy.copy(sequences)
lista.pop(0)
print(lista)
for x in range(sequences):
mc =sequences[x]+lista[x]
Во-вторых, ваше утверждение range(sequences)
неверно. Функция range()
принимает целые числа в качестве входных данных, а не списки. Вот что дало тебе TypeError: 'list' object cannot be interpreted as an integer
# VALID
range(5)
range(3)
range(10)
# INVALID
range(["A","B","A"])
range(["eyes", "nose", "tail"])
sequences
- это список. Вы хотите range(len(sequences))
не range(sequences)
В конце мы можем изменить ваш исходный код для работы:
import copy
sequences = ["A","B","A","A","B"]
lista = copy.copy(sequences)
lista.pop(0)
print(lista) # prints ["B","A","A","B"]
mc = list()
for x in range(len(lista)):
mc.append(lista[x] + sequences[x + 1])