banjh

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
内置函数二
一、知识要点:
1、reversed:将一个序列翻转,并返回此翻转序列的迭代器。
例子:
l1 = [1,3,4,2,6]
s1 = 'abcdefg'
dic = {'name':'alex','age':1000,'hobby':'oldwomen'}
reversed(l1) #变成一个迭代器
for i in reversed(l1):
    print(i)
for i in reversed(s1):
    print(i)
for i in reversed(dic):  # 字典不行
    print(i)

2、bytes:将unicode转换成bytes 类型
a1 = '太白'
print(a1.encode('utf-8'))

两个都是一样的
a1 = '太白'
b1 = bytes(a1,encoding='utf-8')
print(b1)

3、repr:返回一个对象的string形式(原形毕露)输入什么就输出什么
print('alex')
print(repr("ale,x"))
print(repr("{'alex':'sb'}"))
repr() 常用于json pickle序列化模块判断特殊字符串与python字符串的区别。
4、格式化输出 %r,需要输出引号的时候使用。
msg = 'alex是%r的人' % ('德高望重')
print(msg)

5、sorted:对所有可迭代的对象进行排序操作,默认从小到大。
l1 = [2,3,5,3,1,9,8,6]
l1.sort()
print(l1)  #这个是改变了原来的列表的操作
print(sorted(l1))  # 这个操作形成了一个新列表
print(l1)   # 原列表不变

l2 = [(1,1000),(2,18),(4,250),(3,500)]
print(sorted(l2))   #默认按元组的第一个元素来排序

def func1(x):
    return x[1]
print(sorted(l2,key=func1,reverse=True)) #对元组的第二个元素进行反向排序

6、enumerate:枚举,返回一个枚举对象。

7、zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
拉链方法:将多个iter纵向组成一个个元组。
l1 = [1,2,3,5,6,7]
tu1 = ('alex','太白', 'wusir', '女神')
dic = {'name': '日天', 'age':28, 'hobby': 'tea', 'weight':100}
zip(l1,tu1,dic)  #这个就变成一个可迭代对象
for i in zip(l1,tu1,dic):
    print(i)

8、filter:过滤。作用是对象是迭代器。
l1 = [i for i in range(10)]
def func1(x):
    return x % 2 == 0
print(list(filter(func1,l1)))  #把能被2整除的数留下来

9、map:会根据提供的函数对指定序列做映射。 循环模式
例如:输出下面列表的平方
l1 = [1,2,3,4]
print([i**2 for i in l1])  #我们可以使用列表推导式做
def func(x): return x**2
print(list(map(func,l1)))   #也可以使用map函数做

重点需要掌握的函数:
sum reversed min max map sorted filter zip
其中含有key方法的函数 : min max map sorted filter zip

二、需要了解的函数
1、slice:构造一个切片对象,用于列表的切片,相当于设置默认切片规则。
例如:
l1 = [i for i in range(10)]
l2 = l1[:5:2]
l3 = [i for i in range(10,20)]
sli_obj = slice(0,5,2)
print(l3[sli_obj])
l4 = ['a', 'b', 'c', 'd', 'e']
print(l4[sli_obj])

2、str:将数据转化成字符串。

3、format:与具体数据相关,用于计算各种小数,精算等。
print(format('test', '<20')) #左对齐
print(format('test', '>20'))  #右对齐
print(format('test', '^20'))  #中间对齐,其实我们可以使用center方法!

4、all:可迭代对象中,全都是True才是True,一般多用于做条件判断
l1 = [1,'',[1,3],(2,4)]
print(all(l1))
5、any:可迭代对象中,有一个True 就是True,一般多用于做条件判断
print(any([1,0,'',()]))

6、ord:输入字符找该字符的unicode编码的位置
print(ord('a'))
print(ord('中'))

7、chr:输入位置数字找出其对应的unicode编码字符
print(chr(97))
print(chr(20013))

8、ascii: 如果是ascii码中字符就直接返回该值,不是则返回他在unicode的位置(16进制表示。)
print(ascii('a'))
print(ascii('中')) # '\u4e2d' 变成10进制十就是20013

三、匿名函数
匿名函数即lambda表达式。
普通函数中有且只有返回值的函数才可以用匿名函数进行简化,一行函数表示。
普通函数表达式:
def func2(x):
    return x**2

lambda表达式:
func2 = lambda x : x**2

例:函数接收两个参数,求这两个参数的和
func2 = lambda x,y: x+y
print(func2(1,2))

注意:匿名函数一般不会单独使用,多与内置函数结合使用。
例1:按照元组的第二个值进行排序
l2 = [(1,1000),(2,18),(4,250),(3,500)]
print(sorted(l2,key=lambda x:x[1]))

例2:利用内置函数匿名函数将dic按照值进行排序。
dic={'k1':10,'k2':100,'k3':30}
print(sorted(dic,key=lambda x:dic[x]))
print(sorted(dic.items(),key=lambda x:x[1])) #输出一个元组列表

例3:利用内置函数匿名函数 计算列表[1,5,7,4,8]每个数的2倍。
print(list(map(lambda x:x*2,[1,5,7,4,8])))

例4:利用内置函数匿名函数,将[5,8,11,9,15]中值大于10的留下来。
print(list(filter(lambda x: x>10,[5,8,11,9,15])))

lambda的返回值可以使用三元运算来表示,因为我们return后面就可以使用三元运算表示
func = lambda x: x if x > 2 else x * 2

posted on 2018-08-22 16:15  banjh  阅读(106)  评论(0编辑  收藏  举报