<div>
</div>
<p>我正在处理一个挑战,我正在尝试使用嵌套for循环来解决它。挑战要求在给定的整数数组<code>nums</code>和整数<code>k</code>中,确定数组中是否有两个不同的索引<code>i</code>和<code>j</code>,其中<code>nums[i] = nums[j]</code>和<code>i</code>和<code>j</code>之间的绝对差小于或等于<code>k</code></p>
<p>这是我的尝试:</p>
<pre><code>def containsCloseNums(nums, k):
for i in nums:
for j in nums:
if (nums[i] == nums[j]) and abs(i-k) <= k:
return True
else:
return False
</code></pre>
<p>但这是我得到的错误:</p>
<pre><code>Traceback (most recent call last):
main.py3 in the pre-written template, in getUserOutputs
userOutput = _rundyxlc(testInputs[i])
main.py3 in the pre-written template, in _rundyxlc
return containsCloseNums(*_fArgs_zeutcbsrcmec)
main.py3 in the pre-written template, in containsCloseNums
if (nums[i] == nums[j]) and abs(i-j) <= k:
IndexError: list index out of range
</code></pre>
<p>我看不出我超出索引的原因,因为我的增量没有超过列表的长度</p>
<p>我很感激所有的帮助,但由于这是一个挑战,我更愿意知道为什么我的逻辑不起作用,而不是仅仅给出一个答案</p>
<p>您应该将for循环更改为:</p>
<pre><code>for i in range(len(nums)):
for j in range(len(nums)):
</code></pre>
<p>您正在生成<strong>元素,而不是<strong>索引。在<code>nums</code>中有一个元素大于<code>nums</code>的长度,这就是抛出错误的原因</p>