list - 使用 for 循环获取列表中项目的错误索引
问题描述
我试图返回列表中两个元素的索引,其总和等于目标值(leetcode 问题):
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in nums :
for j in nums:
if nums.index(i)!=nums.index(j) and i+j==target:
return nums.index(i),nums.index(j)
Your input:
[2,7,11,15]
9
Output:
[0,1]
Expected:
[0,1]
对于给定的输入,上面的代码片段工作正常,但对于 [3,3] 它返回“[]”
Input:
[3,3]
6
Output:
[]
Expected:
[0,1]
我尝试使用简单的 for 循环,不仅用于 [3,3] 用于返回 [] 的所有相同输入,例如:[1,1],[2,2][1,1,1] 等等为什么它返回[]?
解决方案
问题在于 nums.index 函数的使用。它的实现方式,它返回列表的第一个索引,其中参数等于列表中的元素(可以在此处找到)。因此,在输入为 [3, 3] 的此循环的每次迭代中,nums.index(i) 和 nums.index(j) 调用始终返回 0(因为输入的第 0 个索引包含 3,即值i 和 j 的每次迭代)。因此,每次迭代的检查都失败并且没有返回任何内容。在我重现您的问题时,我的函数返回 None 而不是 []。也许您的类型注释 None 被解释为 []。
避免此问题的另一种方法可能包括迭代输入的索引而不是值。
推荐阅读
- c++ - 将向量写入输出文件c ++
- python - 如何在 DJANGO 的函数中以同一视图保存和显示数据
- react-aad-msal - 使用 react-aad-msal 在登录期间保持用户状态的成语
- swiftui - SwiftUi ViewModel 未初始化所有存储的属性
- javascript - 在 Node.js 中使用 Jest 进行单元测试
- express - 几个axios请求失败时如何处理成功
- makefile - 执行 [ FILE1 -ot FILE2 ] 在 make 和 shell 中产生不同的结果
- c - 在现代计算机上如何强制执行只读?
- keycloak - 通过 iFrame 访问时的 Keycloak LOGIN_ERROR
- reactjs - React - 错误:超过最大更新深度 - useReducer