zoukankan      html  css  js  c++  java
  • python笔记5(内置函数)

    一、内置函数

    1、abs()--取绝对值函数

    print(abs(-0.11))
    x=-0.01
    y=0.11
    print(abs(x),abs(y))
    ------------------------------
    0.11
    0.01 0.11

    2、all()--判断可迭代对象内是否有0或false或元素为空

    all(iterable)如果非可迭代对象,则会报错

    >>> all(123)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not iterable
    
    print(all([0,-5,-1]))#0为假,负数为真
    print(all([-1,-2,-3]))
    print(all([1,2,3,'false']))
    print(all([1,2,3,'false','']))#有空对象
    print(all([1,2,3,False]))#有False
    print(all([]))
    print(all({'0':'1'}))
    print(all({0:'1'}))
    print(all({}))
    print(all(''))
    #all 可迭代的对象内 如果存在假的 则返回false。此时空的为真
    #any 可迭代的对象内 如果存在真的 则返回true 此时空的为假
    ----------------------------------
    False
    True
    True
    False
    False
    True
    True
    False
    True
    True

    3、any()---判断给定的可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True。

    any 与all用法相似 需要用Iterable
    any(Iterable)

    print(any([0,1,3]))
    print(any([]))
    print(any([-1]))
    print(any([0]))
    print(any([0,-1]))
    ------------------------------
    True
    False
    True
    False
    True

    4、bin()--- 将数字转换为二进制

    print('bin 将数字转换为二进制')
    print(bin(255))
    print(bin(-255))
    print(bin(4))
    print(bin(-4))
    ----------------------
    0b11111111
    -0b11111111
    0b100
    -0b100

    5、bool()---布尔值判断

    空和0 为假,需要注意0的情况,如list[0]、dict{0:123}这种情况为真

    print(bool(0))#
    print(bool(1))
    print(bool(-1))
    print(bool([]))#
    print(bool([0]))
    print(bool([1]))
    print(bool([-1]))
    print(bool({}))#
    print(bool({0:'01'}))
    print(bool({1:'xx'}))
    print(bool({-1:'xxx'}))
    #布尔值判断 空和0为假
    -------------------------------------------------
    False
    True
    True
    False
    True
    True
    True
    False
    True
    True
    True

    6、bytes()---与encode方法类似

    需要理解的是python中str格式与bytes格式b‘xxxxx’、r'xxxxx'、‘\uxxxxxx’这些格式的使用

    bytes的作用为将字符串转码为bytes类型,实际和encode的效果一样。

    astr='你好'
    print(bytes(astr,encoding='utf-8'))#将一个字符串装换为b类型
    print(astr.encode('utf-8'))
    print(astr.encode('gbk'))
    print(astr.encode('utf-8').decode('utf-8').encode('gbk'))
    # str (unicode) -> encode -> utf -8 -> decode-> unicode -> str -> encode -> gbk
    print(astr.encode('unicode_escape'))
    print(bytes(astr,encoding='unicode_escape'))
    print(astr.encode('unicode_escape').decode('unicode_escape'))
    print(astr.encode('unicode_escape').decode())
    -----------------------------------------------
    b'\xe4\xbd\xa0\xe5\xa5\xbd'
    b'\xe4\xbd\xa0\xe5\xa5\xbd'
    b'\xc4\xe3\xba\xc3'
    b'\xc4\xe3\xba\xc3'
    b'\\u4f60\\u597d'
    b'\\u4f60\\u597d'
    你好
    \u4f60\u597d

    7、bytearrary()----很少用到

    可以对byte类型数据进行修改,了解即可

    c=bytes('abc',encoding='utf-8')
    print(c,c.capitalize())
    print(c)#输出c 发现大小写没有改变
    c=c.capitalize()
    #c字符串不能被改变,只能重新覆盖
    print(c)
    d=bytearray('abc',encoding='utf-8')
    print(c,d)
    d[1]=70
    print(c,d,d[1])
    #c[1]=44 TypeError: 'bytes' object does not support item assignment
    print(c,d)
    -------------------------------------
    b'abc' b'Abc'
    b'abc'
    b'Abc'
    b'Abc' bytearray(b'abc')
    b'Abc' bytearray(b'aFc') 70
    b'Abc' bytearray(b'aFc')

    8、callable()---是否可调用

    #callable()#判断是否可调用 变量后面加()表示调用,函数可以调用,类可以调用。列表字典不能调用

    print(callable({}))
    ----------------------
    False

    9、chr()--- ASCII码转换成字符 对应ord() 字符转为ASCII码

    知道A 65 a97 相差32

    print(chr(100))
    print(chr(96))
    print(chr(70))
    print(ord('A')) #大A的ascii码和小a差32
    print(ord('a'))
    -----------------------------------
    d
    `
    F
    65
    97

    10、compile()---仅做个了解 不常用 将str装换成可执行的形式

    平时看上去和直接使用exec、eval没什么区别

    print('--------------------')str = "3 * 4 + 5"
    a = compile(str,'','eval')
    x=eval(a)
    print(x)
    str = "for i in range(0,10,3): print(i)"
    c = compile(str,'','exec') # 编译为字节代码对象
    exec(c)
    print('--------------------')
    exec(str)
    -------------------------

    --------------------
    17
    0
    3
    6
    9
    --------------------
    0
    3
    6
    9

    11、complex()---复数 此处不做了解 一般用不着

    12、dict()---生成一个空字典

    a=dict()
    b={}#a、b两种生成方式实际没有区别
    print(type(a),a,len(a))
    print(type(b),b,len(b))
    -------------------------------
    <class 'dict'> {} 0
    <class 'dict'> {} 0

    13、dir()---查看一个变量有哪些内部方法 用于查询

    >>> import time
    >>> dir(time)
    ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']
    >>>

    14、divmod()---求商取余 第一个为商 第二个为余数

    print(divmod(10,3),divmod(100,25),divmod(3,5))#返回一个元组 第一个元素为商,第二个为余数
    -----------------------------------
    (3, 1) (4, 0) (0, 3)

    15、eval()---用来将字符串转换为字典、列表

    16、exec()---执行str

    17、lambda()----匿名函数

    三种功能:数字运算与逻辑运算、数据过滤、与functools结合做数列求和求积运算

    数字与逻辑运算:

    print(lambda x:x+1) #输出函数体的位置
    print((lambda x:x+1)(1))#定义一个函数 接收左边的x  右边表示要输出结果 x+1
    print((lambda x:x if x >10 else 10)(5))  #定义一个函数 左边为输入x 右边如果x>10则输出x 否则输出y 用括号调用
    tmp_x=lambda x:x if x>10 else 20 #将函数体赋值 相当于def了一个函数
    print(tmp_x(5)) #函数调用
    (lambda x:print(x) if x>10 else print(50))(10)#用print的方式时一样的
    --------------------------------
    <function <lambda> at 0x0000015B82F62E18>
    2
    10
    20
    50

    数据过滤(与map或filter结合使用,注意filter、map的区别):

    t1=filter(lambda i:i>3,range(7))
    t2=filter(lambda i:i*3,range(7))
    print(t1)
    for i in t1:
            print(i)
    print(t2)
    for i in t2:
        print(i)
    #lambda不仅能表示函数运算还能表示一种关系 配合filter进行过滤
    print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
    #t3=map(lambda i:i*3,range(7))
    t3=map(lambda i:i>3,range(7))#与filter对比
    print(t3)
    for i in t3:
            print(i)
    -------------------------------------------
    <filter object at 0x000001B68E7EFC50>
    4
    5
    6
    <filter object at 0x000001B68E7EFCC0>
    1
    2
    3
    4
    5
    6
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    <map object at 0x000001B68E7EFC88>
    False
    False
    False
    False
    True
    True
    True

    此程序说明:filter()结合lambda使用,是完成过滤的效果,能将符合条件的值显示出来,但是不能进行计算,所以t2=filter(lambda i:i*3,range(7))的结果为1-6,此处还需要注意range(7)表示的数字范围为1-6,没有7和0。filter与map对比,map所输出的结果为布尔值,不是最后过滤出来的数据

    与functools结合做数列求和求积运算:

     

    import functools
    t3=functools.reduce(lambda x,y:x+y,range(101))
    print(t3)
    t4=functools.reduce(lambda x,y:x*y,range(1,5))
    print(t4)
    t5=functools.reduce(lambda x,y:x*y,range(5))
    print(t5)
    ----------------------------
    5050
    24 #1*2*3*4
    0  #这里从0开始

     

    18.float()---浮点数

    19、format---字符串格式输出 先不深究

    import time
    x='%Y %m %d %X'
    print(time.strftime(x))

    20 frozenset()---只读集合 

    a=set([1,2,3,4,5])
    b=frozenset([1,2,3,4,5])
    print(a,b)
    for i in a:
        print(i)
    for i in b:
        print(i)
    ------------------------------------------------------------
    {1, 2, 3, 4, 5} frozenset({1, 2, 3, 4, 5})
    1
    2
    3
    4
    5
    1
    2
    3
    4
    5

     

    与普通集合相比,少了很多方法

    21、globals()---全局表量(与locals()对比)

    22、hash()---求哈希值

    hh=hash('yomi') #哈希 散列函数 字典的查找方式 hash算法之后 排序 之后用折半查找
    print(hh)#了解一下python内置的hash函数对于字符串来说,每次得到的值不一样

    23、hex() ---十进制转换为十六进制

    >>> print(bin(255),hex(255))
    0b11111111 0xff

    24、max 与min---最大最小值的运算,注意的是列表、字典的情况

    print(min({9:'nnn',1:'xxx'}),min([1,2,3,4]),max(1,2,3,4))
    ------------------------------------------------------
    1 1 4
    
    >>> max('a','b','c')
    'c'

    25、iter()---迭代器

    此处不再展开介绍,详见迭代器章节,next ->迭代器里面的__next__

    26 、oct()---八进制转换

    print(oct(1),oct(8),oct(16))
    -----------------------
    0o1 0o10 0o20

    27、ord()---与chr相对应

    chr ASCII码转换成字符 对应ord 字符转为ASCII码 知道A 65 a97 相差32

    print(chr(100))
    print(chr(96))
    print(ord('A'))
    print(ord('a'))

    28、pow()---指数运算

    print(pow(2,10)) 
    1024
    print(pow(2,2))
    4

     29、reversed( )---将字符串取反并拆分成迭代器

    xxx='abc'
    y=reversed(xxx)
    print(y)
    for i in y:
      print(i) #反转并变成一个迭代器
    ------------------------------
    <reversed object at 0x00000000027D75F8>
    c
    b
    a

    30、round( )--- 小数点后取位数

    print(round(1.23456,2))
    print(round(1.23456,5))
    print(round(1.23456,0))
    print(round(1.23456))
    ----------------------------------
    1.23
    1.23456
    1.0
    1

    31、slice()---切片(注意管前不管后)

    a=[11,22,33,44,55]
    print(a[slice(2,4)])#切片
    print(a[2:4])
    ----------------------
    [33,44]
    [33,44]
    #管前不管后

    32、sorted()--- 排序(注意lambda的另一种使用方式)

    dict_tmp={0:111,7:222,3:999,2:923,-5:122,11:114,9:-888}#这是个无序的字典,key和value的值都是无序的
    print(sorted(dict_tmp))#输出key的排序结果,此处只输出key,列表形式输出
    print(sorted(dict_tmp.items()))#输出key的排序结果,此处输出key-value的对应值,列表形式输出,key-value为元组形式
    print(sorted(dict_tmp.items(),key=lambda x:x[1]))#输出value的排序结果,输出格式为key-value,列表形式输出,key-value为元组形式
    ---------------------------------------
    [-5, 0, 2, 3, 7, 9, 11]
    [(-5, 122), (0, 111), (2, 923), (3, 999), (7, 222), (9, -888), (11, 114)]
    [(9, -888), (0, 111), (11, 114), (-5, 122), (7, 222), (2, 923), (3, 999)]

    33、zip()--- 组合(在key-value的结构时使用可以组合成关系,适当加工可以生成字典)

    z1=[1,2,3,4,5]
    z2=['a','b','c','d','e']
    z3=zip(z1,z2)#组合成key-valued的对应形式
    print(type(z3),z3)
    for i in z3:
    print(i) #迭代器 此处循环后不会下面不会有运行结果
    for i,j in z3:
    print(i,j)
    -------------------------------------
    <class 'zip'> <zip object at 0x000001D4B9659F48>
    (1, 'a')
    (2, 'b')
    (3, 'c')
    (4, 'd')
    (5, 'e')
  • 相关阅读:
    Testlink & Redmine组合拳演练
    使用IP欺骗Loadrunner并发测试小结
    程序设计的思想与执行步骤参考
    读《世界是自己的,与他人无关》
    读《A4纸上的奇迹》
    读《流动的盛宴》
    既往不恋,当下不杂,未来不乱——读《怦然心动的人生整理魔法》
    GridCtrl学习笔记(3)一行一行地更新表格,有bug版
    GridCtrl学习笔记(2)寻找自动更新表格的最新数据并把其显示到当前窗口的方法
    GridCtrl学习笔记(1)建立使用GridCtrl的工程
  • 原文地址:https://www.cnblogs.com/yomi/p/8423709.html
Copyright © 2011-2022 走看看