鱼C论坛

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

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

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

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

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

x
class Solution():
    def twoSum(self, nums:List[int], target:int) -> List[int]:
        hashmap = {}
        for index , num in enumerate(nums):
            hashmap[num] = index
        for i in num in enumerate(nums):
            j = hashmap.get(target - num)
            if j is not None and i != j:
                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 函数返回值应该是一个整型列表

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

: 和 -> 就相当于注释,说明参数或函数返回值的类型
想知道小甲鱼最近在做啥?请访问 -> 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 函数返回值应该是一个整型列表

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


想知道小甲鱼最近在做啥?请访问 -> 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参数
想知道小甲鱼最近在做啥?请访问 -> 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):
from typing import List

class Solution():
    def twoSum(self, nums:List[int], target:int) -> List[int]:
        hashmap = {}
        for index , num in enumerate(nums):
            hashmap[num] = index
        for i in num in enumerate(nums):
            j = hashmap.get(target - num)
            if j is not None and i != j:
                return [i, j]
s = Solution()
s.twoSum([2, 7, 11, 15], 9)

改成这样试试看:
from typing import List

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

返回:
[0, 1]


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


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

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

还是i说用了这个模块的类型检查,输出输入必须是注释的类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


和普通注释没有太大区别,也不会规定你必须输入注释类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 14:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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