Почему второй вложенный цикл пропускает дублирующиеся значения во время итерации? - PullRequest
0 голосов
/ 29 декабря 2018

почему второй цикл for (j) пропускает j=1 во время итерации, если я ввожу список как [3,3,4]?Я ожидаю, что answer_list будет [0,1] после запуска.

Все нормально, если я введу список как [1,2,4].

class Solution:
    def twoSum(self, nums: object, target: object) -> object:   
        Answer_list = []
        for i in nums:

            print("i_index:", nums.index(i))
            for j in nums:
                print("j_index:" ,nums.index(j))
                if target - i - j == 0:
                    print (i,j)
                    Answer_list.append(nums.index(i))
                    Answer_list.append(nums.index(j))
                    print("Answer List:", Answer_list)

        return list(set(Answer_list))

s=Solution()
print(s.twoSum([3,3,4], 6))

1 Ответ

0 голосов
/ 29 декабря 2018

Проблема в том, что 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...