Python 六剑客
- Map():根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表,形如:map(function,’xxxx’)#举个栗子:map(str.lower,"SBUBbh")
Filter():函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
Reduce():函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果
- 推导列表
- Lamda
- 切片
- Map用法
ord("a")#可以算出小写的字母对应的ASCII码
ord('a')-ord('A')#可以计算大小写的字母对应的ASCII码之差
Chr(90):大写的ASCII码转化为大写字母
#题目s="abcdefg"转化为大写
s="abcdefgh"
result=""
for i in s:
result+=chr(ord(i)-32)#ord(i)将小写的字母对应的ASCII码
#-32表示将小写的字母变为对应的大写ASCII码
#chr把大写的ASCII码转化为大写字母
print (result)
...#1
def convert(letter):
return chr(ord(letter)-32)
#print(map(convert,"weerrfs"))#输出结果:<map object at 0x00000188E1A76CD0>
...#2
def convert(letter):
return chr(ord(letter)-32)
#print(list(map(convert,"sdiji ")))#输出结果:['S', 'D', 'I', 'J', 'I', '\x00']#放进一个list里面,list也可以替换成tuple
#print(tuple(map(convert,"sdnin")))#list也可以替换成tuple,放进一个tuple里面,
...#3,以上1,2是到3的主见演化过程
def converse(letter):
return chr(ord(letter)-32)
#print("".join(list(map(convert,"sdninsain"))))#输出结果:SDNINSAIN
#print("".join(tuple(map(convert,"asjhih"))))#””.join要list或者tuple连起来
...
举个栗子:
list(map(str.lower,"SBUBbh"))#list存放大写转小写
>>>['s', 'b', 'u', 'b', 'b', 'h']
tuple(map(str.lower,"asnjGSHH"))#tuplet存放大写转小写
>>>('a', 's', 'n', 'j', 'g', 's', 'h', 'h')
list(map(str.upper,"asnj"))#list存放小写转大写
>>>['A', 'S', 'N', 'J']
tuple(map(str.upper,"JInjsn"))#tuple存放小写转大写
>>>('J', 'I', 'N', 'J', 'S', 'N')
- filter用法说明
...#1
def get_upper_letter(letter):
if letter>='A' and letter<='Z':
return True
else:
return False
#print (filter(get_upper_letter,"asJJKK"))#输出结果:<filter object at 0x000001AAC1356CD0>
#6个字母。每个字母会分别代入到一次定义函数get_upper_letter,如果函数返回true
#这个字母会被放进list/tuple里面保存,否则会被过滤扔掉
...#2
def get_upper_letter(letter):
if letter >='A'and letter <='Z':
return True
else:
return False
#print (list(filter(get_upper_letter,"asJJKK")))#输出结果['J', 'J', 'K', 'K']
#print (tuple(filter(get_upper_letter,"asJJKK")))#list也可以替换成tuple,放进一个tuple里面#输出结果('J', 'J', 'K', 'K')
...#3以上1,2是到3的主见演化过程
def get_upper_letter(letter):
if letter>='A' and letter<='Z':
return True
else:
return False
print ("".join(list(filter(get_upper_letter,"asJJKK"))))#输出结果:JJKK
print ("".join(tuple(filter(get_upper_letter,"asJJKK"))))#输出结果:JJKK
#只要纯数字--》其他过滤掉
def get_upper_letter(letter):
if letter>='0' and letter<='9':
return True
else:
return False
print ("".join(list(filter(get_upper_letter,"asJ1234Jgg789KK"))))#输出结果:JJKK
print ("".join(tuple(filter(get_upper_letter,"asJ2345JKK08"))))
- reduce用法,累加
#reduce 用法#首先是要reduce要引用包,reduce累加的用处
from functools import reduce
def add(a,b):
return a+b
print(reduce(lambda a,b:a+b,[1,2,3,4,5])) #lambda匿名函数
...
- 切片
切片:序列:列表、元组、和字符串这些对于序列老说是可以使用的
[起始位置:结束位置(开区间):步长]
a="12345567"
a[1:5:]#切片取2345
>>> '2345'
a[::-1]#倒着取
>>>'76554321'
a[::-2]
>>> ‘7542'#间隔两位倒着取
a[1:]#从第二位取,结束位置可以不写
>>>'2345567'
a[:5]#从第一位取到第四位,起始位置可以不写
>>>'12345'
a[:]#取全部
>>> '12345567'
a[::2]#两个两个取
>>>'1356'
a[-2:]#从倒着取后两位
>>> '67'
a[-3::-1]#从倒数第三位取前面的再倒着展示
>>>'554321'
a[-5:-2]#从倒数5个取到倒数第2个
>>> '455'
a[-1:-5:-1]
>>>'7655’
- lambda:匿名函数
Lambda里面既不能写if和while以及其他循环表达式
func=lambda x,y:x+y
func(2,3)
>>>5
- 推导列表
[i for i in range(6)]
>>>[0, 1, 2, 3, 4, 5]
[i*i for i in range(6)]#平方,可以写表达式,以及嵌套两层循环
>>>[0, 1, 4, 9, 16, 25]
[i*i for i in range(10) if i%2==0]#取偶数的平方
>>>[0, 4, 16, 36, 64]
[i*i for i in range(10) if i%2==1]#取奇数的平方
>>>[1, 9, 25, 49, 81]
[i*s for i in range(3) for s in range(4)]#求排列组合的值
>>>[0, 0, 0, 0, 0, 1, 2, 3, 0, 2, 4, 6]