Проблема в том, что nums.index(j)
вернет индекс первого вхождения .Таким образом, он никогда не вернет 1 для [3, 3, 4].index(3)
.
Чтобы заставить его работать, выполните итерацию по enumerate(nums)
, так как это также даст вам индекс:
def twoSum(self, nums: object, target: object) -> object:
Answer_list = []
for i_index, i in enumerate(nums):
print("i_index:", i_index)
for j_index, j in enumerate(nums):
print("j_index:" , j_index)
if target - i - j == 0:
print (i,j)
Answer_list.append(i_index)
Answer_list.append(j_index)
print("Answer List:", Answer_list)
return list(set(Answer_list))
Вы также можетеИзбегайте некоторых бесполезных итераций, только имея внутренний цикл поиска впереди в списке.Возможно так:
for j_index, j in enumerate(nums[i_index+1:]):
print("j_index:" , j_index+i_index+1)
if target - i - j == 0:
print (i,j)
Answer_list.append(i_index)
Answer_list.append(j_index+i_index+1)
print("Answer List:", Answer_list)