DAY14 内置函数-2,匿名函数
内置函数-2
数据结构相关:
str():把数据类型转换为字符串类型。
list():将一个可迭代对象转换为列表(如果是字典的话,将字典的键转换为列表)
#把字符串转换为列表,会把字符串的每一个元素当成列表的元素 s1 = 'djfkdjf' print(list(s1)) >>> ['d', 'j', 'f', 'k', 'd', 'j', 'f'] #把元组转换为列表 tu1 = (1,2,3,4) print(list(tu1)) >>> [1, 2, 3, 4] #把字典转换为列表,会把字典的键转换为列表 dic1 = {'name':'he','age':23,'sex':'male'} print(list(dic1)) >>> ['name', 'age', 'sex'] #把集合转换为列表 set1 = {1,2,3,4} print(list(set1)) >>> [1, 2, 3, 4]
tuple():将一个可迭代对象转换为元组(如果是字典的话,将字典的键转换为元组)
#把字符串变成元组,同列表一样的效果 s1 = 'jkjdk' print(tuple(s1)) >>> ('j', 'k', 'j', 'd', 'k') #把列表转换为元组 l1 = [1,2,3,4] print(tuple(l1)) >>> (1, 2, 3, 4) #把字典转化为元组,会把字典的键变成元组的元素 dic1 = {'name':'he','age':23,'sex':'male'} print(tuple(dic1)) >>> ('name', 'age', 'sex') #把集合转换为元组 set1 = {1,2,3,4} print(tuple(set1)) >>> (1, 2, 3, 4)
dict(): 创建一个字典。
#用dict()方法创建一个字典 dic1 = dict(name='he',age=23,sex='male') print(dic1) >>> {'name': 'he', 'age': 23, 'sex': 'male'}
set():创建一个集合。
#用set()方法创建一个集合 set1 = set({1,2,3,4}) print(set1) >>> {1, 2, 3, 4}
跟字符相关:
ord():输入字符,返回unicode对应的编码位置。
print(ord('a')) >>> 97 print(ord('b')) >>> 98 print(ord('何')) #能够返回中文,所以说明是unicode编码,而非ascii >>> 20309
chr():输入unicode对应的编码位置,返回相应的字符。
print(chr(20309)) >>> 何 print(chr(98)) >>> b
ascii():测试字符是否在ascii中,\u表示不在。
print(ascii('a')) >>> 'a' print(ascii('何')) >>> '\u4f55'
repr():返回一个对象的string形式
print('alex') print(repr('alex')) print(repr('{“name":"he"}')) >>> alex 'alex' '{“name":"he"}'
bytes():用于字符串转为bytes类型
s = '中国' b = bytes(s,encoding='utf-8') print(b) >>> b'\xe4\xb8\xad\xe5\x9b\xbd'
可迭代类型相关:
all():检测可迭代对象中的元素,如果全是True,才返回True。
any():检测可迭代对象中的元素,如果有一个True,则返回True。
l1 = [1,2,3,4,''] #all()全部为True,才返回True。""空字符串对应的布尔值为False print(all(l1)) >>> False l1 = [True,1,2,0,False] print(any(l1)) >>> True
zip():俗成拉链方法,传入多个可迭代对象,把对应的元素打包成一个元组,并返回有这些元组的类表。
l1 = [1,2,3] l2 = ['wusir','alex','taibai'] dic1 = {'name':'he','age':23,'sex':'male','city':'gz'} >>> [(1, 'wusir', 'name'), (2, 'alex', 'age'), (3, 'taibai', 'sex')] 谨记:以最短的可迭代对象为主,超过的方法无法合并。
reversed():翻转可迭代对象的元素,变成迭代器。
l1 = [11,22,33,44] l2 = reversed(l1) for i in l2: print(i) >>> 44 33 22 11
sorted(): 对可迭代对象进行排序,返回的是一个新列表,不影响原列表。因为底层是C写的,所以效率很高。
#一。复习之前列表的sort()方法: l1 = [1,2,3,6,5,8] l1.sort() print(l1) #利用列表的sort()方法排序,会影响原列表 >>> [1, 2, 3, 5, 6, 8] #二。使用内置函数sorted()排序 l1 = [1,2,3,6,5,8] print(sorted(l1)) >>> [1, 2, 3, 5, 6, 8] print(l1) >>> #利用sorted()排序,返回的是一个新列表,不影响原列表。 [1, 2, 3, 6, 5, 8] #三。sorted()方法可以接受key,自定义排序的规则 l1 = ['dfjkfj','dkfjdjf','dkfkdfjkdfjkdjf','dkjfkdfjfdfdkfdkfj'] def lstlen(x): return len(x) print(sorted(l1,key=lstlen,reverse=True)) >>> ['dkjfkdfjfdfdkfdkfj', 'dkfkdfjkdfjkdjf', 'dkfjdjf', 'dfjkfj']
map():把一个可迭代对象中的每一个元素,放到函数中执行,返回一个迭代器。类似于列表推导式的循环模式。
def func1(x): return x**2 l1 = [0,1,2,3,4] print(list(map(func1,l1))) >>> [0,1,4,9,16] print([i**2 for i in range(0,5)]) #使用列表推导式的循环模式亦可完成 >>> [0, 1, 4, 9, 16]
filter():把一个可迭代对象的每一个元素,放到函数中执行,满足条件的放入filter迭代器中,不满足的过滤掉;类似列表推导式的筛选莫斯。
def fun1(x): return x % 2 ==0 for i in filter(fun1,[1,2,3,4,5,6]): print(i) >>> 2 4 6
匿名函数
匿名函数,以lambda关键字定义的函数,为了满足用一句话解决功能简单的函数。
格式:
lambda 形参[..] : 返回值
使用方法:
#一.把lambda函数赋值给一个变量 plus_1 = lambda x : x+1 res = plus_1(1) print(res) >>> 2 #例子二: #普通函数 def all_upp(s): '''把字符串全部转为大写''' return s.strip().upper() print(all_upp('python')) #匿名函数 all_upp = lambda s:s.strip().upper() print(all_upp('python')) #lambda的推荐使用 #如果有一些内置方法,带key参数,即接受函数为参数的,例如:min(),max(),sorted(),map(),filter()等 #那么lambda就可以作为其参数 my_list = [1,2,3,4,5,6,7] def odd(*args): '''找到列表里面的所有奇数,并返回一个新列表''' new_list = [] for i in args: if i % 2 ==1: new_list.append(i) return new_list print(odd(*my_list))