Я недавно начал изучать python. Следующий код вызывает ошибку типа type, указывающую, что я не могу использовать кортежи в качестве индекса в списке. Я совершенно уверен, что я использую целые числа, а не список для доступа к моему списку. Ошибка вызывается в строке, где я строю подматрицу. Можете ли вы мне помочь?Индексы индексов типаError должны быть целыми числами
Traceback (most recent call last):
File "matrix_input.py", line 44, in <module>
print(contains(matrix, target))
File "matrix_input.py", line 33, in contains
sub_matrix = [row[index:len(target[0])] for row in matrix[i, len(target)]]
TypeError: list indices must be integers, not tuple
Это функция бросает ошибку:
def sub_array(row, sub_row):
i = 0
index = -1
for idx, val in enumerate(row):
if i >= len(sub_row):
break
elif val == sub_row[i]:
index = idx
i+=1
else:
i = 0
return index if i == len(sub_row) else -1
def contains(matrix, target):
for i in range(len(matrix)):
index = sub_array(matrix[i], target[0])
if index is not -1:
sub_matrix = [row[index:len(target[0])] for row in matrix[i, len(target)]]
print(sub_matrix)
if sub_matrix == target:
return "YES"
return "NO"
Я заменяю кому: и это сработало. Спасибо. В чем разница между 'is not' и'! = '? –
В качестве побочного примечания этот вид массива [y, x] обозначается вполне приемлемым для массивов numpy. Таким образом, будут примеры кода, где эти обозначения используются правильно. Просто дикая догадка, но это могло привести к путанице ОП. Что касается второго вопроса OP о «есть» и равенства ... это слишком сложно для короткого ответа. См. Http://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python – BlivetWidget
@GiuseppePes 'is' tests identity' == 'проверяет значение. Возможно, существует более одного объекта, представляющего «-1» (хотя и маловероятно), поэтому значение может быть «-1», но идентификатор будет другим объектом. –