015_内置函数2

1,数据类型:int bool ...
   数据结构:dict tuple list set str

2,reversed(),reverse()  反转

  2.1,#reverse()   反转,在原表反转,即修改原表

lis = [1,2,3,4,5]
lis.reverse()
print(lis)

  2.2,#reversed()    也是反转,但是不改变原表且返回一个迭代器

lis = [1,2,3,4,5]
lis2 = reversed(lis)
print(lis2)

3,slice()切片函数

lis = (1,2,3,4,5)
sli = slice(1,5,2)  # 返回一个对应的切片对象
print(lis[sli])	# 使用切片对象
# 等同于
print(lis[1:5:2])

4,format

    见转载文章:内置函数——format

5,bytes 转换成bytes类型(将对应的字节转换成对应的16进制一个字节对应一个十六进制

  • 网络编程,网络上只能传二进制
  • 照片和视频也是以二进制存储
  • html网页爬到的也是编码
print(bytes('你好',encoding='gbk'))    #将gbk编码的‘你好‘,转换成对应的16进制,
print(bytes('你好',encoding='utf-8'))  #将utf-8编码的‘你好‘,转换成对应的16进制,

6,bytearray(s,encoding='utf-8')  是一个bytes类型的一个数组

print(bytearray('你好',encoding='utf-8'))

  详细讲解:https://www.jianshu.com/p/af0f7efe2709

7,字符转换

  • ord  字符按照unicode转数字
print(ord('a')) #>>>97
  • chr  数字按照unicode转字符
print(chr(97))	#>>>a
  • ascii 只要是ascii码中的内容就打印出来,不是就转换成\u

8,repr  用于%r格式化输出,输出原型毕露

name = 'egg'
print('你好%r',%name)	#>>>你好'egg'
print(repr('1'))  #>>>'1'
print(repr(1))    #>>>1

9,all()   any()  都接收可迭代的

  9.1,all()  判断是否有bool值为False的值,如果有就是False(判断是否全为真)

print(all(['a','',123])) #>>>False
print(all(['a',123]))	#>>>True

  9.2,any()  判断是否有bool值为True的值,如果有就是True(判断是否不全为假)

print(any(['',True,0,[]]))  #>>>True

10,zip()  拉链函数

lis = [1,2,3]
lis2 = ['a','b','c']
print(zip(lis,lis2))  #是个迭代器
for i in zip(lis,lis2):
    print(i)
#结果:
(1,'a')
(2,'b')
(3,'c')

  类似拉链方法,长度不一样时依次拉,多出来的不拉。

  可以写多个集合

lis = [1,2,3]
lis2 = ['a','b','c']
tu = ('*','**',[1,2])
dic = {'k1':1,'k2':2}
print(zip(lis,lis2,tu,dic))  #是个迭代器
for i in zip(lis,lis2):
    print(i)
#结果:
(1,'a','*','k1')
(2,'b','**','k2')

11,filter()   map()

  11.1,filter(函数名,可遍历表)

    将表中的元素依次通过前面的函数进行筛选,如果满足条件,函数返回True,则将该元素提出。

    举例:要从一个list [1, 4, 6, 7, 9, 12, 17]中去除偶数,提取出奇数,首先,要编写一个判断奇数的函数;然后,利用filter()过滤掉偶数

def is_odd(x):
    return x % 2 == 1

lis = [1, 4, 6, 7, 9, 12, 17]
 
ret = filter(is_odd, lis)
print(ret)		#返回一个迭代器
 
print(lis)		#不改变原列表
print(list(ret)) #将满足条件(结果为True)的元素提出。

#for i in ret:    # 迭代器只能用一次。
#    print(i)
#还可写为
ret2 = [i for i in [1, 4, 6, 7, 9, 12, 17] if i % 2 == 1]
print(ret2)
lis = [1, 4, 6, 7, 9, 12, 17]
ret3 = filter(lambda x:x%2 == 1,lis)
print(list(ret3))
ret3 = filter(lambda x:True if x%2 == 1 else False,lis)
print(list(ret3))

   举例:删除 None 或者空字符串:

def is_not_empty(s):
    return s and len(s.strip()) > 0

lis = list(filter(is_not_empty, ['test', None, '', 'str', '  ', 'END']))

print(lis)

   11.2,map(函数名,可遍历表)将表中的元素依次传入前面的函数中并执行函数,将函数执行后的结果提出。

ret = map(abs,[1,-4,6,-8])	#绝对值排序
print(ret)
for i in ret:
	print(i)

12,sort()  sorted()   排序

  15.1,sort()在原列表的基础上进行排序,原列表改变

lis = [1,-4,6,5,-10]
lis.sort(key = abs) #按绝对值排序
print(lis)

  12.2,sorted(iterable, key=None, reverse=False)   # 再生成一个表,不改变原表,占内存

    参数说明:
      iterable:是可迭代类型;
      key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
      reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
      返回值:有序列表

l1 = [1,3,5,-2,-4,-6]
l2 = sorted(l1,key=abs)
print(l1)
print(l2)

 

posted @ 2019-03-12 13:30  冰羽~zZ  阅读(107)  评论(0编辑  收藏  举报