python学习记录--递归函数,二分法,三元表达式,列表、字典生成式,匿名函数

今日内容概要

  • 递归函数

  • 算法之二分法

  • 三元表达式

  • 列表生成式 字典生成式

  • 匿名函数

今日内容详细

递归函数

直接或者间接的调用自己

1 .直接调用自己

#count=1

# def index():

# print('from index')
# global count #在函数内部修改全局名称空间
# count += 1
# print(count)
# index()

index()

 

 修改递归深度

import sys

# print(sys.getrecursionlimit())#查询递归深度

# sys.setrecursionlimit(2000)#更改递归深度

递归深度默认是1000次,递归深度是可以查看和更改的

 2间接调用

 

递归函数的应用

应用1

5个人的年纪,每一个比上一个人小两岁,最后一个为18,用递归函数推测年纪

# age(5) = age(4) + 2  # 26
# age(4) = age(3) + 2 # 24
# age(3) = age(2) + 2 # 22
# age(2) = age(1) + 2 # 20
# age(1) = 18
递归函数一定要有结束条件

 

 底层逻辑

 

 应用2

l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, ]]]]]]]]]]

将列表中的数字分别打印出来

方法1

 

 方法2

 

三元表达式 

例子1

# def my_max(a, b):
#      if a > b:
#             return a
#      else:
#             return b
#
#
# print(my_max(1, 2))

针对上述只有两种情况的判断,我们可以使用三元表达式

 例子2

# a = 1111
# b = 2111
# username = 'ly'
# res = a if a > b else ('world' if False else ('帅哥' if username == 'ly' else 'dsb'))
# print(res)

执行逻辑

 

 

 例子3

##### 让用户输入判断
cmd = input('username:').strip()
#        if cmd == 'ly':
#            print('帅哥')
#        else:
#            print('dsb')

res = '帅哥' if cmd == 'ly' else 'dsb'
print(res)

算法之二分法

什么是算法

就是解决问题的高效方法

二分法

常见的算法:冒泡算法, 二分法,选择排序

l = [1, 2, 3, 4, 5, 6, 11, 22, 34, 44, 55, 66, 67, 333, 444]

在 l 列表中找去指定数

方法1

           # for i in l:

           #       if i == 66:
           #       print('找到了')

分法2

 列表生成式

在列表l的每一个元素后面加上abc

l = ['ly', 'jason', 'tom']

方法1(传统方法)

 

 方法2(列表生成式)

 

 不在’jason‘后面加abc

方法1(传统方法)

 

 方法2(列表生成式)

 

 字典生成式

将 l1 , l2 生成一个字典

l1 = ['name', 'age', 'hobby']
l2 = ['ly', 18, 'music']

知识储备

# for i,j in enumerate(l1, start=2):
# print(i,j)

 

方法1(传统方法)

 

 方法2(字典生成式)

 

 推理可得

# 集合生成式

# res = {l1[i] for i, j in enumerate(l1)}
# #   print(res)

# 生成器

# res = (l1[i] for i, j in enumerate(l1))
# print(res)

匿名函数

即没有名字的函数

语法格式:

lamnda 参数:返回值

 

 # res = lambda x:x**2

# print(res(2))

匿名函数的使用

匿名技术不会单独使用,需要结合一些内置函数使用

技术储备

   map函数的使用

 

 

 

 

 
posted @ 2022-01-11 21:34  mwz21  阅读(59)  评论(0)    收藏  举报