python2020-6-17笔记-六剑客

Python 六剑客

  1. Map():根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表,形如:map(function,’xxxx’)#举个栗子:map(str.lower,"SBUBbh")

Filter():函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

  1.  

Reduce():函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果

  1.  
  2. 推导列表
  3. Lamda
  4. 切片

 

  1. 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')

  1. 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"))))

  1. 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匿名函数

...

  1. 切片

切片:序列:列表、元组、和字符串这些对于序列老说是可以使用的

[起始位置:结束位置(开区间):步长]

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’

  1. lambda:匿名函数

Lambda里面既不能写if和while以及其他循环表达式

func=lambda x,y:x+y

func(2,3)

>>>5

  1. 推导列表

[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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值