python - 使用嵌套 for 循环遍历单个列表时索引超出范围
问题描述
我正在解决一个挑战,我正在尝试使用嵌套的 for 循环来解决它。挑战要求在给定的整数数组nums
和一个整数k
中,确定是否有两个不同的索引i
以及j
在数组中的位置和之间的nums[i] = nums[j]
绝对差值小于或等于。i
j
k
这是我的尝试:
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
但这是我得到的错误:
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
我没有看到为什么我会超出索引的原因,因为我没有增加超出列表的长度。
我感谢所有帮助,但由于这是一个挑战,所以知道为什么我的逻辑不起作用而不是仅仅吐出答案对我来说更有益。
解决方案
在您的代码中
for i in nums:
“i”是此列表“nums”中的项目。
您应该更改为:
for index_i, value_i in enumerate(nums):
那么“index_i”是项目的索引,而value_i是列表“nums”中项目的值
顺便说一句,我认为应该是:
def containsCloseNums(nums, k):
for i_index, i_value in enumerate(nums):
for j_index, j_value in enumerate(nums):
if (i_value == j_value) and abs(i_index-j_index) <= k:
return True
else:
return False
推荐阅读
- python - Python 2D 列表切片,其中一个列表充满了空字符串
- angular - Angular-8 限制导航以防止浏览器挂起
- powershell - powershell - 从字符串中获取一个单词
- php - 背景图像在 Laravel 8 中不显示
- c# - 检查数组中的所有按钮是否都处于活动状态
- java - 简化两个布尔表达式
- php - 在不可为空的字段上验证 NotBlank
- kubernetes - Keycloak在K8s集群外时backchannel注销的解决方案
- angular - Google App Engine 上的 Angular 12 Universal 错误:./my-app/server/main.js:语法错误:“(”意外
- plsql - 在本地机器上创建目录