python3学习-函数-表达式

三元表达式

      res = 条件成立返回的值 if 条件 else 条件不成立返回的值

      例:res='成功' if name == '123' else '失败'

列表生成式       

[循环取出来的值进行运算  for  循环取出的变量  in  列表名]

[循环取出来满足if判断的值进行运算  for  循环取出的变量  in  列表名  if  判断]

语法:

[expression for item1 in iterable1 if condition1
for item2 in iterable2 if condition2
...
for itemN in iterableN if conditionN
]
类似于
res=[]
for item1 in iterable1:
    if condition1:
        for item2 in iterable2:
            if condition2
                ...
                for itemN in iterableN:
                    if conditionN:
                        res.append(expression)

例:

      names = ['a','b','c']

      l=[name + '_123'    for    name    in     names]

      print(l)

>>> ['a_123','b_123','c_123']

取出列表的值和索引

l = ['a','b','c']

for i in enumerate(1): 

      print(i)

列表的解压缩

for i,v in enumerate(1):
      print(i,v)

字典生成式

例如:

keys = ['name','age','sex']

vals = ['a','v','c']

dic = {k:vals[i] for i,k in enumerate(keys) if i >0}

print(dic)

例如:

{i:i for i in range(10)}

字典生成式用于集合的生成

{i for i in range(10)}

{i for i in 'hello'}

匿名函数:没有名字的函数,用于仅临时使用一次的场景

  1. lambda x,y,z=1:x+y+z

  2. lambda 参数名们 : 表达式 <-----表达式的结果作为返回值

匿名函数与其他函数进行配合使用(max,min,sorted,map,filter,reduce)

salaries={'egon':3000,'alex':100000000,'wupeiqi':10000,'yuanhao':2000}

max 和 min 取什么比什么,直接取字典比的是key

max(salaries)

min(salaries)

通过max函数的key参数,改变max函数的比较依据

max函数会for循环出一个值,值会被传给key指定的函数,调用key指定的函数,拿到返回值作为依据

第一个值是被max循环的对象

a = max(salaries,key=lambda k :salaries[k])

b = min(salaries,key=lambda k :salaries[k])

print(a)

print(b)

sorted() 进行排序

nums = [1,4,25,6,7,99]

print(sorted(nums))

print(sorted(nums,reverse= True))

对字典进行排序

res = sorted(salaries,key= lambda name:salaries[name])

print(res)

map :把一个列表按照自定义映射规则映射成一个新的列表

names = ['a','b','c']

res = map(lambda name : name+'123',names)

print(res)

print(list(res))

filter :从一个列表中过滤出,符合过滤规则的值形成新的列表

相当于for循环取出元素,传给匿名函数,讲调用匿名函数返回值为true的元素留下

names = ['a12','b','c12','d']

res = filter(lambda name : name.endswith('12'),names)

print(res)

print(list(res))

res1 = [name for name in names if name.endswith('12')]

print(res1)

print(list(res1))

reduce :把多个值合并成一个结果

from functools import reduce

l=['a12','b','c12','d']

res = reduce(lambda x,y:x+y,l,'A')

# # 'A'是合并参数,l进行循环取出列表中的值,两个值给匿名函数作为参数传入

# # 最后取出来的是一个合并的字符串

print(res)

res = reduce(lambda x,y:x+y,range(1,101))

进行叠加运算

print(res)

生成器表达式(生成器推导)

使用()生成生成器,用于迭代

g=((i+2) ** for i in range(2,27))

next(g)

可以使用在函数调用中,且省略一对小括号

sum(i ** 2 for i in range(10))

猜你喜欢

转载自blog.csdn.net/qq_33961117/article/details/81876036