常用内置函数以及for循环本质

常用内置函数

  1、map() 映射

l = [1,2,3,4]
map(lambda x:x+1,l)  # 循环获取列表中每个元素并传递给匿名函数保存返回值

  2、zip() 拉链

复制代码
# 第一种
l = [11, 22, 33, 44]
name_list = ['jason', 'kevin', 'tony', 'jerry']
# 传统做法 new_list
= [] for i in range(len(l)): new_list.append((l[i],name_list[i])) print(new_list) [(11, 'jason'), (22, 'kevin'), (33, 'tony'), (44, 'jerry')]
# zip res
= zip(l, name_list,) print(list(res)) # [(11, 'jason'), (22, 'kevin'), (33, 'tony'), (44, 'jerry')] # 第二种 l = [11, 22, 33, 44, 55, 66, 77] name_list = ['jason', 'kevin', 'tony', 'jerry'] res = zip(l, name_list) print(list(res)) # [(11, 'jason'), (22, 'kevin'), (33, 'tony'), (44, 'jerry')] # 第三种 l = [11, 22, 33, 44, 55, 66, 77] name_list = ['jason', 'kevin', 'tony', 'jerry'] l1 = [1, 2, 3, 4, 5, 6, 7] l2 = [8, 7, 6, 4, 3, 2, 1] res = zip(l, name_list, l1, l2) print(list(res)) # [(11, 'jason', 1, 8), (22, 'kevin', 2, 7), (33, 'tony', 3, 6), (44, 'jerry', 4, 4)]
复制代码

  3、max与mix  max求最大值,min求最小值

复制代码
# 1、列表求最大和最小值
l = [11, 22, 33, 44, 55, 66, 77]
print(max(l))  # 77
print(min(l))  # 11
# 2、字典求最大和最小值
d = {
    'jason':3000,
    'Bevin':1000000,
    'Ascar':10000000000,
    'aerry':88888
}

print(max(d,key=lambda key:d[key])) # for循环先取值 之后再比较大小 # Ascar # 3、匿名函数 print(min(d,key=lambda key:d[key])) # jason
复制代码

  4、filter 过滤

l = [11, 22, 33, 44, 55]
res = filter(lambda x: x > 30, l)
print(list(res))  # [33, 44, 55]

  5、reduce  归总

from functools import reduce

d = [11, 22, 33, 44, 55, 66, 77, 88, 99]
res = reduce(lambda x, y: x + y, d)  # 495
res1 = reduce(lambda x, y: x + y, d, 100)  # 595 还可以额外添加元素值
print(res)
print(res1)

for循环本质

  1、for循环内部原理

    1、将关键字in后面的数据先调用_iter_方法转成迭代器对象

    2、循环执行_next_方法

    3、取完之后_next_会报错,但是for循环会自动捕获该错误并处理

  2、伪代码演示  

res = 数据.__iter__()
while True:
    检测代码是否会报错
    res.__next__()
    如果报错了则自动处理掉并结束while循环

  3、代码演示

复制代码
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 原理
# 1.先将列表转为迭代器对象
res = l1.__iter__()
# 2.循环执行__next__取值
while True:
    print(res.__next__())
# for循环
for i in l1:
    print(i)
复制代码

  4、for循环本质

d = {'name': 'tony', 'pwd': 123, 'hobby': 'read'}
res = d.__iter__()
while True:
    try:
        print(res.__next__())
    except StopIteration as e:
        break

 

posted @   那就凑个整吧  阅读(56)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示