Индекс списка не обновляется правильно - PullRequest
0 голосов
/ 28 января 2019

Печать списка индекса дает 0 на протяжении всей итерации.

class Solution(object):
    def twoSum(self, nums, target):
        indices = []
        print len(nums)
        for i in nums:
            sum = 0
            i_ind = nums.index(i)
            print ("i_ind = %d"%(i_ind))
            for j in nums:
                j_ind = nums.index(j)
                print ("j_ind = %d"%(j_ind))
                if i_ind != j_ind:
                    sum = i+j
                    if sum == target:
                        indices.append(i_ind)
                        indices.append(j_ind)
                        return indices
    return 0

# test case
list1  = [3,3]
target = 6
test1  = Solution()
print(test1.twoSum(list1,target))

Это дает:

2
i_ind = 0
j_ind = 0
j_ind = 0
i_ind = 0
j_ind = 0
j_ind = 0

Но я ожидаю:

2
i_ind = 0
j_ind = 0
j_ind = 1

Как функция должнапрекратить после нахождения суммы первых двух элементов 6.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Функция index () возвращает индекс первого вхождения элемента в списке.Это вызывает неожиданный вывод в вашей программе.Например,

arr = [1, 1, 1]
print (arr.index(1))

Программа всегда выводит 0, так как именно здесь вначале происходит 1.

Вы можете попробовать использовать метод enumerate (), который фактически выполняет итерации как по элементам, так и по индексам.

for ind, elem in enumerate(arr):
   # here ind is the index of elem in arr.
   # elem in the element you are currently at while iterating through arr 
0 голосов
/ 28 января 2019

Используйте enumerate, если вы хотите получить доступ как к индексу, так и к элементу.Подойдя к вашему вопросу,

k = [1,1,2,2,3,3]
k.index(1)#always returns index of first occurrence. (0)
k.index(2)#always returns index of first occurrence. (2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...