函数5

函数的学习5

内容概要


  • 三元表达式
  • 生成式
  • 匿名函数
  • 常见重要内置函数
  • 常见的内置函数

内容详情


三元表达式

# 使用场景:二选一的时候 可用三元表达式简化代码
  三元表达式
    """
        值1 if 条件 else 值2
    条件如果成立则使用值1(if前面的数据)
    条件如果不成立则使用值2(else后面的数据)
    """
  """
  并不是代码写的越少执行的功能越多就越简化 还有一个前提>>>:简洁易读
  三元表达式只用于二选一的情况 最好不要嵌套使用(语法繁琐不简洁)
  """

# 补充:针对if分支结构 也有简化版本 (不符合规范但可以写了解即可)
  name = 'jason'
  if name == 'jason': print(name)
  else: print('嘿嘿嘿')

生成式

1.列表生成式 res = [对i操作 for i in list]
2.字典生成式 res = {l1[i]: l2[i] for i in range(len(l1))} # 字典数据是两个数据组合 两个列表用range循环类表数据个数
3.列表生成式 res = {i for i in range(n)}
所谓生成式即实现功能的基础上简化繁琐代码的固定格式代码(该技术可以简化代码 也可以不用 无外乎写的复杂一点而已)
生成式复杂用法 eg:res = [对i操作 for i in list if i == '']
'''加if判断条件具备筛选能力  注:生成式中值允许出现for和if 不能出现else 因为会产生歧义(for和if都能结合else)'''
"""没有元组生成式 依据上述写法得到的时候后续我们要学习的知识:迭代器"""

匿名函数

匿名函数的意思就是没有函数名
    没有函数名的函数如何调用?
    需要结合其他函数一起使用

# 定义匿名函数
  lambda 形参:返回值
  eg:lambda x:x+2
     用普通函数表示
     def index(x):
         return x + 2
# max:统计最大值
  print(max(list))  # 直接获取数据集中最大的元素值
  '''
  max底层可以看成是for循环依次比较 针对字典默认只能获取到k
  获取到k之后如果是字符串的英文字母 则会按照ASCII码表转成数字比较
      A~Z:65-90
      a~z:97-122
  '''
  def index(x):
      return dict[x]
  print(max(dict,key=index))  # key对应的函数返回什么 max就以什么做比较的依据 比较的是v 返回的是k key相当于是可以更改比较规则的参数
  上述代码可以用匿名函数简写 因为函数功能很单一
  print(max(dict, key=lambda key:info[key]))

常见重要内置函数

1.map 映射
  res = map(index,list)  # 函数index功能为修改列表数据 可用匿名函数简写
  print(list(res))
  map可生成一个将list内数据用函数index修改过后的返回值与list内数据一一对应得的列表  # [index(list[0]), index(list[1]), index(list[2]), index(list[3]), ...]

2.zip 拉链
  res = zip(list1,list2)
  print(list(res))
  将两个列表中的元素一一对应成对  # [(list1[0],list[0]), (list1[1],list[1]), (list1[2],list[2]), ...]
  '''zip可以整合多个数据集'''
  zip(list1,list2,list3...)
  '''zip可以整合多个数据集 如果数据集之间个数不一致 那么依据短的'''

3.filter 过滤
  res = filter(index,list)  # 函数index功能为判断列表数据 可用匿名函数简写
  print(list(res))
  filter可生成一个将list内数据用函数index判断比较后筛选出的数据列表

4.reduce 归总
  '''以前是内置函数 现在是某个模块下面的子函数'''
  需要调用
  from functools import reduce
  res = reduce(index,list,n)  # 函数index功能为加和 可用匿名函数简写
  print(res)
  reduce循环list内数据与n(不写默认0)叠加 res = 总和

# res 迭代器(用于节约空间)

常见内置函数

1.abs()  获取绝对值(不考虑正负号)
  print(abs(-123))
  print(abs(123))

2.all()与any()
  l1 = [0, 0, 1, 0, True]
  print(all(l1))  # False  数据集中必须所有的元素对应的布尔值为True返回的结果才是True
  print(any(l1))  # True   数据集中只要所有的元素对应的布尔值有一个为True 返回的结果就是True

3.bin() oct() hex()  产生对应的进制数
  print(bin(100))
  print(oct(100))
  print(hex(100))

4.bytes()  类型转换
  s = '你好啊 hello world!'
  print(s.encode('utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
  print(bytes(s, 'utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
  '''针对编码解码 可以使用关键字encode与decode  也可以使用bytes和str'''
  s1 = '天黑了 抓紧进屋吧!!!'
  编码
  res = bytes(s1, 'utf8')
  print(res)
  解码
  res1 = str(res, 'utf8')
  print(res1)

5.callable()  判断当前对象是否可以加括号调用
  name = 'jason'
  def index():pass
  print(callable(name))  # False  变量名不能加括号调用
  print(callable(index))  # True  函数名可以加括号调用

6.chr()、ord()  字符与数字的对应转换
  print(chr(65))  # A  根据数字转字符  依据ASCII码
  print(ord('A'))  # 65  根据字符转数字  依据ASCII码

7.dir()  返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
  print(dir(123))
  print(dir('jason'))

8.divmod()
  """
  可以使用在网站的分页制作上
      问
        总共250条数据 每页展示25条 需要多少页   10页
        总共251条数据 每页展示25条 需要多少页   11页
        总共249条数据 每页展示25条 需要多少页   10页
  """
  print(divmod(250,25))  # (10, 0)  第一个参数是整数部分 第二个是余数部分
  print(divmod(251,25))  # (10, 1)
  print(divmod(249,25))  # (9, 24)
  def get_page_num(total_num,page_num):  # 后面django分页器使用
      more,others = divmod(total_num, page_num)
      if others:
          more += 1
      print('需要%s页'%more)
  get_page_num(1000,30)

9.enumerate()  枚举
  name_list = ['jason', 'kevin', 'oscar', 'tony']
  for name in name_list:
      print(name)

  for i,j in enumerate(name_list):
      print(i,j)  # i类似于是计数 默认从0开始

  for i,j in enumerate(name_list,start=1):
      print(i,j)  # 还可以控制起始位置

10.eval() exec()  识别字符串中的python代码  使用频率很低
   print('print("有点饿了")')
   eval('print("有点饿了111")')
   exec('print("有点饿了222")')
   res = """
         for i in range(10):
             print(i)
         """
  eval(res)  只能识别简单逻辑的python代码
  exec(res)  能够识别具有与一定逻辑的python代码

posted @ 2022-03-23 01:09  弄臣  阅读(53)  评论(0)    收藏  举报