1.内置函数(二)
#与数据结构相关
列表和元组:
list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
tuple:将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。
l = list((1,2,3)) print(l) tu = tuple({'k1':1,'k2':2}) print(tu)
#相关内置函数
reversed:将一个序列反转,并返回此翻转序列的迭代器。
L1 = [1,2,3,4] s1 = 'sdadasdasw' dic = {'name':'alex','age':1000,'hobby':'oldwomen'} print(reversed(L1)) for i in reversed(L1): print(i) for i1 in reversed(s1): print(i1) for i2 in reversed(dic): print(i2)
slice:构造一个切片对象,用于列表的切片。
l1 = [i for i in range(10)] l2 = l1[0:6:2] print(l2) l3 = [i for i in range(10,20)] sli_obj = slice(0,5,2) print(l3[sli_obj])
#字符串相关
str:将数据转化成字符串。
format:与具体数据相关,用于计算各种小数,精算等
print(format('text','<20')) print(format('text','>20')) print(format('text''^20'))
bytes:用于不同编码之间的转化。
s = '你好' bs = bytes(s,encoding='utf-8') print(bs) b = '你好'.encode('gbk') b1 = b.decode('gbk') print(b1.encode('utf-8'))
bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
ret = bytearray('alex',encoding='utf-8') print(id(ret)) print(ret) print(ret[0]) ret[0] = 65 print(ret) print(id(ret))
memoryview
ret = memoryview(bytes('你好',encoding='utf-8')) print(len(ret)) print(ret) print(bytes(ret[:3]).decode('utf-8')) print(bytes(ret[3:]).decode('utf-8'))
ord:输入字符找该字符编码的位置
chr:输入位置数字找出其对应的字符
ascii:是ascii码中的返回该值,不是就返回/u...
print(ord('a')) print(ord('中')) print(chr(97)) print(chr(20013)) print(ascii('a')) print(ascii('中'))
repr:返回一个对象的string形式(原形毕露)。
print('alex') print(repr('alex'))
#数据集合:
dict:创建一个字典。
set:创建一个集合。
frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
#相关内置函数
len:返回一个对象中元素的个数。
sorted:对所有可迭代的对象进行排序操作。*****
l1 = [2,3,5,3,1,9,8,6] l1.sort() print(l1) print(sorted(l1)) l2 = [(1,1000),(2,18),(4,250),(3,500)] def func(x): return x[1] print(sorted(l2,key=func))
enumerate:枚举,返回一个枚举对象。
print(enumerate([1,2,3])) for i in enumerate([1,2,3]): print(i) for i in enumerate([1,2,3],100): print(i)
all:可迭代对象中,全都是True才是True
l1 = [1,'',[1,3],(2,4)] print(all(l1))
any:可迭代对象中,有一个True 就是True
print(any([1, 0, '', ()]))
zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
l1 = [1,2,3,5,6,7] tu1 = ('alex','太白', 'wusir', '女神') dic = {'name': '日天', 'age':28, 'hobby': 'tea', 'weight':100} print(zip(l1,tu1,dic)) for i in zip(l1,tu1,dic): print(i)
filter:过滤·。
l1 = [i for i in range(10)] def func1(x): return x%2==0 print(list(filter(func1,l1)))
map:会根据提供的函数对指定序列做映射。循环模式
l1 = [1,2,3,4] def func(x): return x**2 print(list(map(func,l1)))
2.匿名函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。lambda表达式
a = lambda x:x**2 print(a(6))
匿名函数不单独使用,多与内置函数结合
m = [1,5,7,4,8] print(list(map(lambda x:x*2,m)))
3.递归函数
递归函数:在一个函数里在调用这个函数本身
递归的最大深度:998
def foo(n): print(n) n +=1 foo(n) foo(1) import sys print(sys.setrecursionlimit(100000))
def age(n): if n == 1: return 40 else: return age(n-1)+2 print(age(4))