当前位置: 首页 > news >正文

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]

相关文章:

  • 【讲解下ECMAScript和JavaScript之间有何区别?】
  • 力扣 41.缺少的第一个正整数
  • 解决 There is no getter for property named ‘null‘ in ‘class 报错
  • HTML静态网页成品作业(HTML+CSS)—— 家乡南宁介绍网页(2个页面)
  • NSS题目练习7
  • 分享一个 .NET Core Console 项目使用依赖注入的详细例子
  • 前后端实现文件上传进度条-实时进度
  • linux防止nmap扫描
  • Elasticsearch之写入原理以及调优
  • 数据结构--二叉树(二)
  • iOS 通过PacketLogger 抓包蓝牙数据包
  • 新能源汽车内卷真相
  • Redis常用命令——List篇
  • Spring Boot整合Redis
  • C#WPF数字大屏项目实战08--生产量/良品统计
  • 〔开发系列〕一次关于小程序开发的深度总结
  • Docker: 容器互访的三种方式
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • PHP面试之三:MySQL数据库
  • socket.io+express实现聊天室的思考(三)
  • windows-nginx-https-本地配置
  • 包装类对象
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 听说你叫Java(二)–Servlet请求
  • 正则表达式
  • Python 之网络式编程
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #每日一题合集#牛客JZ23-JZ33
  • $.ajax()参数及用法
  • (1)虚拟机的安装与使用,linux系统安装
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (八)Flink Join 连接
  • (备忘)Java Map 遍历
  • (十六)串口UART
  • (一)RocketMQ初步认识
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)大道至简,职场上做人做事做管理
  • ***检测工具之RKHunter AIDE
  • . Flume面试题
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 使用配置文件
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 验证控件和javaScript的冲突问题
  • .NET 直连SAP HANA数据库
  • .Net的DataSet直接与SQL2005交互
  • .Net多线程Threading相关详解