Python高阶应用和常见错误总结

由于日常工作中实现一些开发,经常需要循环遍历列表元素,以及代码开发中定义类和实例化,在这个过程中会犯下一些错误,以及有一些理解,想着记录下来以便后续随时温故而知新,对于不当之处也请各位老铁指正。

迭代

因为在开发中经常需要循环提取列表元素进行处理,如提取标识,比较相似度等。迭代的含义就是重复循环做一些事,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和字符串支持迭代器,但其它数值类型变量不可以使用迭代。解决的办法是先转为字符串再操作。

上一篇:0151-leetcode算法实现之翻转字符串里的单词-reverse-words-in-a-string-python&golang实现


下一篇:攻防世界-reverse-高手进阶区-elrond32