python : map list 切片 推导式

print 语句

# 打印 1
print(1)
# 打印字符串
print('Test')
# 拼接字符串
print('age: ' + '12')

map 函数

map 是 Python 中的一个内置函数,用于将一个函数应用到一个可迭代对象(如列表、元组等)的每一个元素,并返回一个迭代器(从 Python 3 开始返回 map 对象)。map 函数通常与 lambda 表达式或者自定义函数一起使用。

以下是 map 函数的一些基本用法:

语法

map(function, iterable, ...)
  • function : 要应用到每个元素的函数

  • iterable : 一个或多个可迭代对象

示例

将每个元素转换为整数

假设有一个包含字符串数字的列表,想将其转换为整数列表。

str_numbers = ['1', '2', '3', '45']
int_numbers = list(map(int, str_numbers))
print(int_numbers) # 打印 [1, 2, 3, 45]

使用 lambda 函数进行操作
假设有一个列表,想要将每个元素平方。

str_numbers = ['1', '2', '3', '45']
int_numbers = list(map(int, str_numbers)) # 转换为整数
squared_numbers = list(map(lambda x : x ** 2, int_numbers)) # 应用 lambda 将 x 平方
print(int_numbers)
print(squared_numbers)
[1, 2, 3, 45]
[1, 4, 9, 2025]

应用自定义函数

定义一个函数来计算元素的两倍,然后使用 map 来应用这个函数。

str_numbers = ['1', '2', '3', '45']
int_numbers = list(map(int, str_numbers)) # 转换为整数
squared_numbers = list(map(lambda x : x ** 2, int_numbers)) # 应用 lambda 将 x 平方
print(int_numbers)
print(squared_numbers)# 应用自定义函数
def double(x) :return x * 2
doubled_numbers = list(map(double, int_numbers))
print(doubled_numbers)
[1, 2, 3, 45]
[1, 4, 9, 2025]
[2, 4, 6, 90]

多个可迭代对象

如果有多个可迭代对象,map 会并行地应用函数到这些可迭代对象的对应元素上。

# 多个可迭代对象
numbers1 = [1, 2, 3, 4, -11]
numbers2 = [10, 20, 30, 40, 66, 77]
summed_numbers = list(map(lambda x, y: x + y, numbers1, numbers2))
print(summed_numbers)  # 输出: [11, 22, 33, 44]

list

list 是 Python 中非常重要和常用的数据结构。它是一个可变的、有序的序列,允许在其中存储任意类型的对象。列表提供了多种方法来操作存储在其中的数据。

创建列表

  1. 使用方括号

    empty_list = []
    numbers = [1, 2, 3, 4]
    fruits = ['apple', 'banana', 'cherry']
    mixed = [1, 'apple', 3.14, True]
    
  2. 使用 list() 构造函数

    empty_list = list()
    numbers = list(range(1, 5))  # [1, 2, 3, 4]
    characters = list('hello')  # ['h', 'e', 'l', 'l', 'o']
    

访问列表元素

  1. 索引访问

    numbers = [1, 2, 3, 4]
    print(numbers[0])  # 输出: 1
    print(numbers[-1])  # 输出: 4 (负索引从末尾开始)
    
  2. 切片

    Python 切片(slicing)是处理序列(如列表、字符串和元组)的一种强大方法。通过切片语法,可以轻松地访问、修改和复制序列中的子集。切片语法如下:

切片参数说明
start:切片开始的位置(包含)。
stop:切片结束的位置(不包含)。
step:切片的步长(默认为1)。
numbers = [1, 2, 3, 4, 5]
print(numbers[1:3])  # 输出: [2, 3] (不包括索引3)
print(numbers[:3])  # 输出: [1, 2, 3]
print(numbers[2:])  # 输出: [3, 4, 5]
print(numbers[:])  # 输出: [1, 2, 3, 4, 5]
print(numbers[::2])  # 输出: [1, 3, 5] (步长为2)
  1. 添加元素

    numbers = [1, 2, 3]
    numbers.append(4)  # 在末尾添加
    print(numbers)  # 输出: [1, 2, 3, 4]numbers.insert(1, 1.5)  # 在索引1位置插入
    print(numbers)  # 输出: [1, 1.5, 2, 3, 4]more_numbers = [5, 6]
    numbers.extend(more_numbers)  # 扩展列表
    print(numbers)  # 输出: [1, 1.5, 2, 3, 4, 5, 6]
    
  2. 修改元素

    numbers = [1, 2, 3, 4]
    numbers[1] = 10
    print(numbers)  # 输出: [1, 10, 3, 4]
    
  3. 删除元素

    numbers = [1, 2, 3, 4]
    del numbers[1]
    print(numbers)  # 输出: [1, 3, 4]numbers.remove(3)
    print(numbers)  # 输出: [1, 4]last_element = numbers.pop()  # 删除并返回最后一个元素
    print(last_element)  # 输出: 4
    print(numbers)  # 输出: [1]numbers.clear()  # 清空列表
    print(numbers)  # 输出: []
    

列表方法

  1. 查找元素

    numbers = [1, 2, 3, 4, 2]
    print(numbers.index(2))  # 输出: 1 (第一个出现的位置)
    print(numbers.count(2))  # 输出: 2 (元素2出现的次数)
    
  2. 排序

    numbers = [4, 2, 3, 1]
    numbers.sort()  # 就地排序
    print(numbers)  # 输出: [1, 2, 3, 4]numbers.sort(reverse=True)
    print(numbers)  # 输出: [4, 3, 2, 1]numbers = [4, 2, 3, 1]
    sorted_numbers = sorted(numbers)  # 返回排序后的新列表
    print(sorted_numbers)  # 输出: [1, 2, 3, 4]
    print(numbers)  # 输出: [4, 2, 3, 1] (原列表不变)
    
  3. 反转

    numbers = [1, 2, 3, 4]
    numbers.reverse()  # 就地反转
    print(numbers)  # 输出: [4, 3, 2, 1]numbers = [1, 2, 3, 4]
    reversed_numbers = list(reversed(numbers))  # 返回反转后的新列表
    print(reversed_numbers)  # 输出: [4, 3, 2, 1]
    print(numbers)  # 输出: [1, 2, 3, 4] (原列表不变)
    

列表推导式

列表推导式是生成列表的简洁方法:

squares = [x ** 2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 输出: [0, 4, 16, 36, 64]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红队神器Evil-winrm的使用

前言 Evil-winrm 工具最初是由 Hackplayers 团队开发的。开发该工具的目的是尽可能简化渗透测试,尤其是在 Microsoft Windows 环境中。 Evil-winrm 使用 PowerShell 远程协议 (PSRP),且系统和网络管理员经常使用Windows Remote Management 协议进行上传和…

DDei在线设计器-DDeiCore-布局插件

DDei-Core-布局 如需了解详细的API教程以及参数说明,请参考DDei文档 标准布局 经典的框架结构布局,包含了顶部菜单栏、控件工具项、画布、属性面板和底部工具栏等功能面板,通过插件配置可以调整每个部分的顺序和内容。 效果截图 使用方式…

基于JSP技术的文物管理系统

你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员界面 用户前台…

C++基础与深度解析 | 元编程 | 元编程的编写方式 | 减少实例化技巧

文章目录 一、元编程的引入二、顺序、分支、循环代码的编写方式1.顺序代码的编写方式2.分支代码的编写方式3.循环代码的编写方式 三、减少实例化的技巧 这一章写的既浅又乱,为了知识的完整性先传上来,之后会重构 一、元编程的引入 泛型编程提供了一种方式…

【庞加莱几何-02】反演定理和证明

文章目录 一、说明二、 inversion和 reflection三、圆反演的定义四、广义的圆反演成圆 关键词:inversion、reflection 一、说明 这里是庞加莱几何的第二篇文章,是庞加莱基本几何属性的研究。本篇主要说清楚,什么是反演,在反演情况…

【面试官】知道synchronized锁升级吗

一座绵延在水上的美术馆——白鹭湾巧克力美术馆。它漂浮于绿水之上,宛如一条丝带轻盈地伸向远方 文章目录 可重入锁synchronized实现原理 synchronized缺点保存线程状态锁升级锁升级优缺点 1. 可重入锁 面试官:知道可重入锁有哪些吗? 可重入意味着获取…

HTTPS缺失?如何轻松解决IP地址访问时的“不安全”警告

一、问题现象 如果访问网站时出现以下任何一种情况,则说明该网站需要立即整改: 1.浏览器地址栏那里出现“不安全”字样; 2.小锁标志被红叉()、斜线(\)等标志为不可用;…

Python牛市熊市横盘机制 | 缺口分析 | 头寸调整算法

🎯要点 🎯长短期方式:🖊标准普尔指数一年期看涨/看跌走势 | 🖊软银美元基准纳斯达克走势。 🎯市场机制:🖊代码定义市场,彩色图表绘制多种机制 | 🖊牛市熊市…

sub_mch_id 与 sub_appid 不匹配怎么解决

小程序在支付的时候,有时候会碰到:sub_mch_id 与 sub_appid 不匹配的问题。这个问题意味着小程序微信支付时所使用的 sub_mch_id(子商户号)和 sub_appid(小程序的appId)不对应。下面就具体介绍如何核对是否…

AI-知识库搭建(二)GPT-Embedding模型使用

上一篇:AI-知识库搭建(一)腾讯云向量数据库使用-CSDN博客 一、Embedding模型 Embedding模型是一种将高维度的离散数据(如文本、图像、音频等)映射到低维度的连续向量空间的技术。这种技术广泛应用于自然语言处理&…

武汉理工大学嵌入式系统应用之临时抱佛脚复习

其实大学很多课程的期末冲刺复习非常简单,就是在大脑中构建一个redis数据库就行了,缓存下一大堆键值对,然后考试的时候输出,很没意思。 嵌入式系统的定义 以应用为中心,以计算机技术为基础,软件硬件可裁剪…

LabVIEW控制PLC的实现方式

LabVIEW与PLC的结合可以充分发挥两者的优点,实现更高效、灵活和可靠的自动化控制系统。本文将详细介绍LabVIEW控制PLC的实现方式,包括通信接口、数据交换、编程方法及实际应用案例,帮助用户理解并应用这一技术。 通信接口 常见通信协议 La…

WHAT - 富文本编辑器系列(一)

目录 一、介绍1.1 丰富的功能基本功能媒体和文件链接和锚点表格嵌入对象编辑和协作(高级功能)可访问性和国际化(高级功能)插件和扩展安全性集成和兼容性 1.2 流行的前端富文本编辑器1. TinyMCE2. CKEditor3. Quill【大厂推荐】4. …

LabVIEW与PLC的区别

LabVIEW和PLC是工业自动化领域中常见的两种控制和测控方案,各自有独特的优点和适用场景。本文将从多角度比较两者,帮助用户在选择控制系统时做出更明智的决策。 技术背景 LabVIEW LabVIEW是由National Instruments公司开发的图形化编程环境&#xff0…

【集装箱调度】基于粒子群算法实现考虑重量限制和时间约束的集装箱码头满载AGV自动化调度附matlab代码

% 交叉定位 - 最小二乘法定位算法模拟 % 参数设置 numIterations 1000; % 模拟迭代次数 maxDistance 1000; % 最远定位距离(设定范围) speedOfSound 343; % 声速(单位:m/s) % 预警机坐标 source [0, 0]; % 初始…

ChatGPT-4o, 腾讯元宝,通义千问对比测试中文文化

国内的大模型应用我选择了国内综合实力最强的两个,一个是腾讯元宝,一个是通义千问。其它的豆包,Kimi,文心一言等在某些领域也有强于竞品的表现。 问一个中文文化比较基础的问题,我满以为中文文化chatGPT不如国内的大模型。可事实…

2021 hnust 湖科大 操作系统课设 报告+原代码+指导书+流程图源文件

2021 hnust 湖科大 操作系统课设 报告原代码指导书流程图源文件 详情 目录 验证类实验: 1 实验一:Windows进程管理 1 一、 实验题目: 1 二、 实验目的 1 三、 实验内容 1 四、 实验结果与分析 2 五、 小结与心得体会 5 实验二:L…

【知识拓展】HTTP、WebSocket 和 RPC:区别与使用场景详解

在工作中,HTTP、WebSocket 和 RPC 是三种常见的协议或通信方式,根据资料查阅,本文主要记录它们的区别及其适用的使用场景 HTTP(超文本传输协议) 概述 HTTP(Hypertext Transfer Protocol)是一…

Springboot使用redis分布式锁的方法

要想使用redis分布式锁很好地支撑我们的业务 需要确保&#xff1a; 1.加锁要保证原子性&#xff1b; 2.解锁要保证原子性。 示例代码&#xff1a; public Map<String, List<Catelog2Vo>> getCatelogJsonFromDbWithRedisLock() {//使用redis分布式锁&#xff…

Javascript全解(基础篇)

语法与数据类型 语法 var\let\const var 声明一个变量&#xff0c;可选初始化一个值。 let 声明一个块作用域的局部变量&#xff0c;可选初始化一个值。 const 声明一个块作用域的只读常量。 用 var 或 let 语句声明的变量&#xff0c;如果没有赋初始值&#xff0c;则其值为 …