zoukankan      html  css  js  c++  java
  • python学习笔记(八)

    54URL中文编解码

    URL地址里面有中文时,会做编码,如果想解码成中文,需要用:

    From urllib import parse

    CN_str = Parse.unquote(str)

    55、含有生成器的递归函数

    因为函数中含有yield时,就是生成器函数,因此在函数内调用自己时,就不能用普通的函数调用方式。本质上是一个生成器,因此要用生成器的调用方式。

    对一个数分解质因数。红色部分就是函数调用自己,要遍历生成器中的所有元素,并返回。

    def resolution_factors(n):
        for i in range(2, int(math.sqrt(n)+1)):
            if n % i == 0:
                yield i
                n = int(n/i)
                if n == 3:
                    yield n
                else:
                    for j in resolution_factors(n):
                        yield j
                break
            elif i == int(math.sqrt(n)):
                yield int(n)

    def resolution_factors(n)::

      for i in range(2, n + 1):

        if(n % i == 0 ):

          yield i

          n = int(n/i)

          for j in resolution_factors(n):

            yield j

          break

    56Sorted的高级用法

    题目:一个字符串仅包含大小写字母,现在要将其排序成一个新的字符串,次序为从az,且相同的大写和小写字母排在一起,大写在小写前。
    如原字符串为'easqWAwaeq',排序后为'AaaeeqqsWw'

    a = 'easqWAwaeq'

    print(''.join(sorted(a, key=lambda x:ord(x.upper())*2 +x.islower())))

    print(''.join(sorted(a, key=lambda x:ord(x.upper())*2 if x.isupper() else ord(x.upper())*2+1)))

    (1)sorted能用来重新排序的是任何可迭代对象,字符串也是可迭代对象,因此可以不用转换成list就能作为入参

    (2)Sorted的参数key等于的是一个函数,如果另外定义的函数,写法是key=fun,等于函数名称,不带括号。函数的入参是a的每一个元素。a中的每一个元素通过函数处理后的结果来排序。

    (3)Sorted返回的是一个列表,''.join(b),b可以是一个字符串,也可以是一个只含字符串的列表。将list转换成string。

    57、Sorted对多列排序

    l = [(1,2,3,4),(1,3,4,2),(1,2,4,3),(2,1,3,4),(2,4,3,1),(3,4,2,1),(3,2,1,4)]

    对列表l,先按每个元组的第一个元素升序排列,再按第3个元素升序排列

    Sorted(l, key=lambda x: (x[0], x[2]))

    缺点是,只能要么都按升序,要么都按降序排列。不能一个升序,一个降序。

    58、evalexec的用法

    相同点:都是将字符串转换成python代码执行。

    evalevaluate的简写,参数只能是表达式,返回值为表达式的结果,而且只能为一条语句。

    a = eval("5+4")   # a = 9

    exec是execute的缩写,能将字符串转换成python代码执行,没有返回值,参数可以为多行代码块。

    exec("print('Hello world!')")

    如果要执行python文件中的代码:

    with open("test.py") as f:
            exec(f.read())

    59、Python2python3的编码问题

    字符串的编码等于当前文件的默认编码。

    python2中,字符串需要先解码,解码之后的类型为unicode,之后再通过编码,编为其他格式的字符串。

    python3中,unicode类型也是str,字符串需要先解码,解码之后的类型为unicode,之后再编码成其他格式的字符串。

    60、关于出现乱码的问题

    在文件中,所有文字的默认编码为文件的编码,比如py文件设置编码为UTF-8,变量 a = ‘我们’,如果直接print(a),则默认解码为UTF8,显示正常;如果print(a.encode(‘utf-8’).decode(‘GBK’)),则显示乱码(相当于在UTF-8的控制台上显示GBK编码的字符).

  • 相关阅读:
    解决IE8下VS2005,VS2008一些向导提示脚本错误问题
    12-7
    12.4
    写在十一月的尾巴
    11.28
    htm&css 颜色的浮动
    11.27
    11.26
    html基础——表格练习
    html基础——div/span
  • 原文地址:https://www.cnblogs.com/yahutiaotiao/p/9956327.html
Copyright © 2011-2022 走看看