打印列表索引在整个迭代过程中给出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后终止。
答案 0 :(得分:0)
如果您想同时访问索引和元素,请使用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)
答案 1 :(得分:0)
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