首页 > 其他分享 >递归表达式系列

递归表达式系列

时间:2023-03-07 19:36:38浏览次数:42  
标签:系列 name 递归 res list else num print 表达式

递归函数:

什么是递归函数:就是直接或者间接的调用自己

"""
递归:
    1. 递推
        逐层寻找答案
    2. 回溯
        根据最终的答案推导出最原始的答案
    3. 递归函数必须有结束条件!!!
"""

递归练习题:

lst = [1, [2, [3, [4, [5, [6, [7, ]]]]]]]

第一种方法:

 for i in lst:
#     # 判断此时的i值是整数还是列表,如果是整数直接打印,如果是列表,直接for循环
     if type(i) is int:
        print(i)
     else:
         # 如果是列表,直接for循环
         for j in i:
             if type(j) is int:
                 print(j)
             else:
                 # 如果是列表,直接for循环
                 for m in j:
                     if type(m) is int:
                        print(m)

第二种方法:

def get_lst(l):
    for i in l:
        if type(i) is int: #如果为int类型则输出
            print(i)
        else: #如果是其他类型则再次运行这个函数
            get_lst(i)

get_lst(lst)  

二分法:

二分法原则:只有列表中的数据有序才能使用二分法

eg:l = [1, 22, 44 ,10, 3, 45, 66, 88,101, 20, 30 ,40]

target_num = 20

def my_half(target_num, l):
    if len(l) == 0:  #列表l的长度为0时
        print('不好依稀,没找到')
        return
    middle_index = len(l) // 2  # 6  #整数除法,取商
    if target_num > l[middle_index]:  #如果要找的数字大于中间的值
        l_right=l[middle_index+1:] # l[7]  #取左边的值
        print(l_right)
        my_half(target_num, l_right)
    elif target_num < l[middle_index]: #如果要找的数字小于中间的值
        l_left=l[:middle_index]  #取右边的值
        print(l_left)
        my_half(target_num, l_left)
    else:
        print('找到了')

my_half(target_num, l)

 三元表达式:

语法结构:

def my_max(a, b):
    if a > b:
        return a
    else:
        return b

条件成立后的结果   if    条件   else   条件不成立的结果

def my_max(a, b):
    return a if a > b else b

 小练习:

a = 1
b = 10

c = 10
d = 20
res=a if a > b else (c if c > d else ( 'bbb' if d > c else 'aaa'))
print(res)

 

 列表生成式:

name_list = ['kevin', 'jack', 'ly', 'tony']

需求:除了jack不加_NB,其他都加

1.传统做法:

new_list = []
for name in name_list:
    if name == 'jack':
        continue
    else:
        res = '%s_NB' % name
        new_list.append(res)
print(new_list)

 2.特殊做法:

res = ['%s_NB' % name for name in name_list if name != 'jack']

 

字典生成式:

"""
enumerate:使用for循环的时候,可以解压赋值出来两个值,一个是索引,一个是元素
            start:控制的是起始位置,默认是从0开始
"""
for i, j in enumerate(l1, start=2):
     print(i ,j)
 #2. 字典生成式
 res = {i:j for i, j in enumerate(l1)}
 print(res)

第一种   第二种字典生成式

 

匿名函数:

"""
语法格式:
    lambda 形参:返回值
    lambda x:x**2

匿名函数一般步单独使用,会配合其他函数使用
    map()
"""

map(函数名, 要遍历的数据)  # 内部本质就是for循环,再记住两个参数的位置和作用

l = [1,2,3,4,5,6,7,8,9]
# res=list(map(index, l))  # <map object at 0x0000017D935721F0>
#map
res=list(map(lambda x:x**2, l))  # <map object at 0x0000017D935721F0>
print(res) # [1, 4, 9, 16, 25, 36, 49, 64, 81]

zip,拉链

以最短的长度为标准

max   min

filter过滤

 

标签:系列,name,递归,res,list,else,num,print,表达式
From: https://www.cnblogs.com/whxx/p/17189295.html

相关文章

  • 常用正则表达式
     1、数字1、数字:^[0-9]*$2、n位的数字:^\d{n}$3、至少n位的数字:^\d{n,}$4、m-n位的数字:^\d{m,n}$5、零和非零开头的数字:^(0|[1-9][0-9]*)$6、非零开头的最多......
  • linux基本功系列之mv命令实战
    前言linux常用命令之文件管理命令,目前已经进行到第10个,今天我们一起来看看mv命令。日常工作中,我们把文件移走或者改名都是用的mv命令1、MV命令的介绍mv命令来自于英文单词mo......
  • 命令查看windows系统软硬件信息(systeminfo、wmic系列)
    1、systeminfo(查看计算机的基本信息,包括计算机名、网络适配器信息等)    2、wmic系列(可以将brief替换为full获得更加详细的信息)wmicdiskdrivelistbrief(查......
  • C# lambda 表达式
    C#lambda表达式lambda函数是一个小的匿名函数。lambda函数可以接受任意数量的参数,但只能具有一个表达式。本文主要介绍C#lambda表达式。 1、C#lambda表......
  • C# 正则表达式(Regex)
    C#正则表达式(Regex) 正则表达式是形成搜索模式的一系列字符。正则表达式可用于检查字符串是否包含指定的搜索模式。也可以进行字符串的替换和提取。本文主要......
  • C# 递归
    C#递归递归就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用......
  • 干货系列:高通量测序后的下游实验验证方法——m6A RNA甲基化篇|易基因
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。此前,我们分享了m6ARNA甲基化研究的数据挖掘思路(点击查看详情),进而筛选出m6A修饰目标基因。做完MeRIP-seq测......
  • c++ lambda表达式捕获类数据…
    lambda表达式允许捕获局部变量,但是数据成员不是局部变量。用一种特殊的方法,你可以捕获“this”:。usingnamespacestd;classKitty{public:explicitKitty(inttoys)......
  • Python爬虫系列之Session和cookie的使用
    对于经常做数据采集的技术员来说,常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。今天我们就来谈谈Session和cookie的......
  • Rocky Linux 系列3 --- KVM
    一、概要1.环境RockyLinux9.12.KVMKVM是Kernel-basedVirtualMachine的简称,这是一个开源的针对Linux内核的虚拟化解决方案。它同时支持Intel和AMD的CPUs并且允许......