八阿哥笔记--NameError: name ‘List‘ is not defined
·
BUG描述:
使用python在leetcode中完成题目的过程后,在自己本地环境运行代码出错,代码如下:
class Solution(object):
def minPatches(self, nums: List[int], n: int) -> int:
x=1 #[0,x-1]就是当前可覆盖的范围,从[0,0]开始。
patchNum=0 #需要填补的数的个数
index=0 #目前遍历到数组的第几个元素
leng=len(nums) #数组的长度
#测试的时候可能给一个空数组,要考虑到这个情况!
if leng==0 and index==0:
if n==0: #如果输入的n为0,则返回0
return 0
else: #如果给了一个空的数组,那么我们一定要加入1,此时可以覆盖[0,1],所以x变成2
nums.append(1)
patchNum+=1
x=2
while x<=n:
if index<leng and nums[index]<=x:
x+=nums[index]
index+=1
else:
patchNum+=1
x+=x
return patchNum
nums=[1,3]
n=6
print(Solution().minPatches(nums,n))
报错如下:
NameError: name 'List' is not defined
解决方式:
只需要在头部导入typing库即可
from typing import List
python是一门弱类型的语言,使用过程不用过多关注变量的类型,系统在许多时候会自动根据需要分配或者变更变量的数据类型。但是这样会导致在数据类型的辨识上出现偏差,我们自己都不一定记得当初想传什么类型的变量进来或出去....因此在python3.5之后,引入了一个typing模块。
在定义函数的时候,定义输入和输出的数据类型。比如我希望输入的nums是一个int的数组,n是一个int,最终函数返回值也是int.
typing常用类型:
-
int, long, float: 整型,长整形,浮点型;
-
bool,str: 布尔型,字符串类型;
-
List, Tuple, Dict, Set:列表,元组,字典, 集合;
-
Iterable, Iterator:可迭代类型,迭代器类型;
-
Generator:生成器类型;
更多推荐
所有评论(0)