内置函数 二

四、数据结构相关(24)

 

(一)、相关内置函数:(8)

 
1、filter(函数func,可迭代对象)
过滤,将可迭代对象内容,一个一个传入函数func进行 过滤,func中只返回True或False,filter返回一个新的迭代器
#返回的迭代器里的值,数量有可能跟原来的可迭代对象个数不一样(map 是一样)
例如:删除列表中的None 和空字符串:
def is_not_empty(n):
    if n is not None and n!="":
        return True
g = filter(is_not_empty,['test', None, '', 'str', ' ', 'END'])
print(list(g))
输出:['test', 'str', ' ', 'END']

2、map

map(函数func,可迭代对象),通过函数func修改可迭代对象的内容,并返回一个迭代器
#(迭代器里值的个数,跟可迭代对象的一致)
def func(i):
    return i*i
g = map(func,[1,2,3,4])
print(list(g))

3、enumerate 枚举

enumerate(可迭代对象,start=0)将一个可迭代对象的元素和索引,组合成一个元组,start为开始索引,默认为0
返回一个迭代器
例如:
a = enumerate(["a","b","c"])
for i in a:print(i)
输出:(0, 'a')
        (1, 'b')
        (2, 'c')

例如:给字典加编号:

se = {'computer':10000,'umbrella':200}
for num,name in enumerate(se):
    print(num,name,se[name])
输出
0 computer 10000
1 umbrella 200

4、len 长度

 
5、all()  判断是否有bool值为False的值
             参数为可迭代对象,如果元素全为True,则返回True,如果直接传入空的列表,字符串等,也是True
    例如:
all( [ ] ) ——》True
all( [1,2,"",{}] ) ——》False
 
6、any()  判断是否有bool值为True的值
               参数为可迭代对象,只要元素有一个是True,就返回True,如果直接传空的列表等,返回False
    
7、zip  拉链,将多个可迭代对象,像拉链一样,组合在一起,组成多个元组,返回一个迭代器
例如:
l = [1,2,3,4,]
a = "abc"
dic = {"k1:v1","k2:v2"}
for i in zip(a,l,dic):print(i)
输出 ('a', 1, 'k2:v2')
        ('b', 2, 'k1:v1')

8、sorted  排序

    sorted(可迭代对象,key,reverse)  ,返回一个新列表
    key可以传入一个函数,例如key=abs,按绝对值大小排序,key=len,按内容的长度排序,
    reverse默认为False,从小到大。设置为True时从大到小
    #与列表内的方法list.sort() 区别:list.sort 修改的是列表本身,sorted 是新的列表
 

(二)、数据集合相关(3)

    dict  强转
    set   强转 
    frozenset(可迭代对象):构建一个不可变的唯一元素无序集合,返回值可以作字典的key
例如:
a = frozenset([1,5,22,22,33])
print(a,type(a))
输出 frozenset({1, 5, 22, 33})    <class 'frozenset'>

(三)、序列相关(13)

 
1、列表和元组
    list    强转
    tuple  强转
 
2、相关内置函数:
    1、reversed(可迭代对象) ,翻转内容, 返回一个迭代器,
    2、slice 相当于切片,在多次重复同种切片操作时,有可能会用到
       例如:
ls = [1,2,3,4,5,6,7]
my_slice = slice(1,5,2)
print(ls[my_slice])
输出:[2,4]

3、字符串相关

    1、str 强转
        用法很多
    比如:左右对齐,中间对齐
print(format("a","<20"))      左对齐
print(format("a",">20"))      右对齐
print(format("a","^20"))      居中
输出:
a                   
                   a
         a       

    3、bytes  转换为字节 网络传输时用字节

s = "alex 和xxx"
by = bytes(s,encoding='utf-8')     转为字节:b'alex \xe5\x92\x8cxxx'
ne = by.decode('utf-8')                对字节再编码:alex 和xxx
    
    4、bytearray(可迭代对象) 返回一个新的字节数组
          生成的数组的元素是可变的,并且每个元素的值变化范围:0<= x <256
          与字符串相比:字符串做修改,是新建一个新的字符串,bytearray 则是修改的自身
    #array c语言里的数组 
a = "alex和"
ret = bytearray(a,encoding="utf-8")
print(ret,id(ret))
ret[0] = 65                  变为A
print(ret,id(ret))
s = ret.decode("utf-8")  再编码
print(s)
输出:bytearray(b'alex\xe5\x92\x8c')    2363696713208
          bytearray(b'Alex\xe5\x92\x8c')   2363696713208
          Alex和

5、memoryview

    函数返回给定参数的内存查看对象(memoryview)
    #内存查看对象:是指对支持换缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问(?)
ret = memoryview(bytes("你好",encoding="utf-8"))          #ret是个内存地址,只能查看,不能修改
print(ret,len(ret))                               #<memory at 0x000001D2F8DB5F48>   6 
print(ret[:3])                                     #<memory at 0x000001D2FAA9A1C8>
print(bytes(ret[:3]).decode("utf-8"))     #你
print(bytes(ret[3:]).decode("utf-8"))     #好

6、ord  字符按照unicode转数字

  print(ord("A"))     65
7、chr  数字按照unicode转字符
  print(chr(65))           A          
8、ascii 字符串转ascii  (还是str类型)
  print(ascii('你好'))   '\u4f60\u597d'
  print(ascii("abc"))     'abc'                   
 
9、repr  主要用于%r 格式化输出
   可以原封不动的显示出来,包括字符串两边的引号,这样可以区分'123'  和 123
  print(repr("123"))        '123'  (带引号)
  print("%r" % ("123"))     '123'   (带引号)
 

五、数字相关(14)

(一)、数据类型(4)

    bool
    int
    float
    complex(实部,虚部)  如果传入一个字符串,如:"1+2j",则+号两边不能有空格
  print(complex(1,2))         (1+2j)
  print(complex("1+2J")      (1+2j)
 

(二)、进制转换(3)

    bin :二进制
    oct:八进制
    hex:十六进制
print(bin(10))     0b1010
print(oct(10))     0o12
print(hex(10))    0xa

(三)、数学运算(7)

1、abs()
    计算绝对值 
 
2、divmod(两个数)
    返回一个元组,(整除数,余数)  在做分页的时候可以用
print(divmod(7,2)    (3,1)  
 
3、round 小数精确,会四舍五入
    位数参数如果比小数长,则原小数不变
print(round(3.1415926,4))          3.1516
print(round(3.1415926,100))      3.1415926

4、pow  幂运算

    pow(x,y,z) 默认z为1, x的y次方,再对%z 取余
 
5、sum 求和
    sum(iterable,start)  start默认为0   最后结果为start+iterable中的值的总和
    可以应用在本金与利息算总和
    不能接收散列的值,例如sum(1,2,3)是不对的
 
6、min  max  最小 最大值
    min max(iterable,key,default)
    #可以接收散列的值,和可迭代对象
    #key 是一个函数名,通过函数的返回值 来确定最后的结果
    #default ,如果迭代对象为空时,用来设置默认的最小值
例如
print(max([1,2,-3],key=abs))       -3

 

 
 
posted @ 2017-09-08 20:08  唐宋元明卿  阅读(69)  评论(0)    收藏  举报