鱼C论坛

 找回密码
 立即注册
查看: 1741|回复: 6

[已解决]问题:这段代码的方法定义那段如何理解?

[复制链接]
发表于 2020-8-2 17:29:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. class Solution():
  2.     def twoSum(self, nums:List[int], target:int) -> List[int]:
  3.         hashmap = {}
  4.         for index , num in enumerate(nums):
  5.             hashmap[num] = index
  6.         for i in num in enumerate(nums):
  7.             j = hashmap.get(target - num)
  8.             if j is not None and i != j:
  9.                 return [i, j]
复制代码


定义方法的这段怎么理解,为什么可以这样写,我把答案全复制直接运行是’List‘ is not defined
最佳答案
2020-8-2 17:32:32
本帖最后由 Twilight6 于 2020-8-2 17:36 编辑




这里实际上这里只是类似注释一样,告诉你这些参数应该填入的类型,

函数 twoSum(self, nums:List[int], target:int) -> List[int]: 中的:

nums:List[int] 告诉我们 nums 这个参数应该填入的是一个 整型类的列表

target:int 告诉我们 target 参数填入的是一个整型

-> List[int]: 告诉你  twoSum 函数返回值应该是一个整型列表

并不影响正常代码运行,如果你想在自己编辑器运行代码,方法见楼上


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-2 17:29:56 | 显示全部楼层
本帖最后由 zltzlt 于 2020-8-2 17:34 编辑

力扣题解的代码不能直接运行,在代码前添加一句:

  1. from typing import List
复制代码


: 和 -> 就相当于注释,说明参数或函数返回值的类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 17:32:32 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-2 17:36 编辑




这里实际上这里只是类似注释一样,告诉你这些参数应该填入的类型,

函数 twoSum(self, nums:List[int], target:int) -> List[int]: 中的:

nums:List[int] 告诉我们 nums 这个参数应该填入的是一个 整型类的列表

target:int 告诉我们 target 参数填入的是一个整型

-> List[int]: 告诉你  twoSum 函数返回值应该是一个整型列表

并不影响正常代码运行,如果你想在自己编辑器运行代码,方法见楼上


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 17:51:27 | 显示全部楼层
Twilight6 发表于 2020-8-2 17:32
这里实际上这里只是类似注释一样,告诉你这些参数应该填入的类型,

函数 twoSum(self, nums:List, ...

我实例化后,s.twoSum([2, 7, 11, 15], 9)还提示我缺少target参数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-2 17:53:40 | 显示全部楼层
本帖最后由 Twilight6 于 2020-8-2 17:56 编辑
白白白白丶白 发表于 2020-8-2 17:51
我实例化后,s.twoSum([2, 7, 11, 15], 9)还提示我缺少target参数





我这里正常运行,只是这里代码错了:for i in num in enumerate(nums):

  1. from typing import List

  2. class Solution():
  3.     def twoSum(self, nums:List[int], target:int) -> List[int]:
  4.         hashmap = {}
  5.         for index , num in enumerate(nums):
  6.             hashmap[num] = index
  7.         for i in num in enumerate(nums):
  8.             j = hashmap.get(target - num)
  9.             if j is not None and i != j:
  10.                 return [i, j]
  11. s = Solution()
  12. s.twoSum([2, 7, 11, 15], 9)
复制代码


改成这样试试看:

  1. from typing import List

  2. class Solution():
  3.     def twoSum(self, nums:List[int], target:int) -> List[int]:
  4.         hashmap = {}
  5.         for index , num in enumerate(nums):
  6.             hashmap[num] = index
  7.         for i,num in enumerate(nums):
  8.             j = hashmap.get(target - num)
  9.             if j is not None and i != j:
  10.                 return [i, j]
  11. s = Solution()
  12. print(s.twoSum([2, 7, 11, 15], 9))
复制代码


返回:

  1. [0, 1]
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-3 09:52:11 | 显示全部楼层
本帖最后由 白白白白丶白 于 2020-8-3 09:54 编辑
Twilight6 发表于 2020-8-2 17:32
这里实际上这里只是类似注释一样,告诉你这些参数应该填入的类型,

函数 twoSum(self, nums:List, ...


这里注释有没有对代码 也没有影响把,或者在语句结束用#来注释也是一样的奥。

像上面题目那样的注释有什么好处吗?

还是i说用了这个模块的类型检查,输出输入必须是注释的类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-3 12:06:14 | 显示全部楼层
白白白白丶白 发表于 2020-8-3 09:52
这里注释有没有对代码 也没有影响把,或者在语句结束用#来注释也是一样的奥。

像上面题目那样的注释 ...


和普通注释没有太大区别,也不会规定你必须输入注释类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-24 16:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表