由于日常工作中实现一些开发,经常需要循环遍历列表元素,以及代码开发中定义类和实例化,在这个过程中会犯下一些错误,以及有一些理解,想着记录下来以便后续随时温故而知新,对于不当之处也请各位老铁指正。
迭代
因为在开发中经常需要循环提取列表元素进行处理,如提取标识,比较相似度等。迭代的含义就是重复循环做一些事,Python的iter(iterable)函数可以实现序列的迭代器,也可以用for和while循环实现自动调用next()获取下一个元素。map和lamba函数都可以实现可迭代序列的迭代操作。下面是一个小小的例子,实现整数的反转。
def Reverse(number):
x=list(map(int,str(number)))
result=[]
i=len(x)-1
while(i>=0):
result.append(x[i])
i=i-1
return result
if __name__=='__main__':
x=Reverse(7892)
print(x)
Standard Output
[2, 9, 8, 7]
定义类和实例化
Python是面向对像和过程结合的语言,要实现较为复杂的功能时需要先抽象为各个类,定义类中实现的方法,再去实例化调用执行,得到结果或者输出API接口。上面的例子是直接定义函数和调用,如果在类中定义函数则需要把self作为默认第一输入参数,另外输入的参数类型是多样的,这点与java不同,不需要定义,如果是可变参数,可以为*args,args接收的是一个tuple,如果是字典dict则是**kw是关键字参数,kw接收的是一个dict。
class Selution:
def Reverse(self,number):
x=list(map(int,str(number)))
result=[]
i=len(x)-1
while(i>=0):
result.append(x[i])
i=i-1
return result
if __name__=='__main__':
y=Selution().Reverse(7892)
print(y)
Standard Output
[2, 9, 8, 7]
常见错误
1、复制粘贴时错误
报错提示Python invalid non-printable character U+00A0,由于习惯了复制现成的代码,导致报错,所以一般先处理下复制的代码,去掉空格,或者再不行用笨办法重新敲一遍
2、实例化类调用函数时报错误
报错提示Missing 1 required positional argument,这里主要是实例化类时引用类名称时需要加上(),
如y=Selution.Reverse(7892)这样就会报上述错误,加上()后便不会报错。
3、迭代时报错
报错提示TypeError: 'int' object is not iterable
这里需要注意的是Python是tuple、list、set、dict和字符串支持迭代器,但其它数值类型变量不可以使用迭代。解决的办法是先转为字符串再操作。