【Python基础】数据容器的切片操作和集合

news2024/12/24 8:16:09

文章目录

  • 前言
  • 一、切片操作
    • 1.1 什么是切片?
    • 1.2 如何使用切片?
  • 基本切片
  • 带步长的切片
  • 省略起始和结束索引
  • 逆序切片
  • 二、集合
    • 2.1 什么是集合?
    • 2.2 如何定义集合?
    • 2.3 集合常用函数
      • 1. add()
      • 2. remove()
      • 3. discard()
      • 4. pop()
      • 5. clear()
  • 总结


前言

在Python编程中,数据容器是不可或缺的一部分。它们允许我们存储和管理数据,而切片操作和集合则是处理这些数据的重要工具。本文将深入探讨Python中的切片操作和集合,包括它们的定义、用法、常见格式以及示例代码,以帮助您更好地理解和利用它们。


一、切片操作

1.1 什么是切片?

切片是一种用于从序列类型(如列表、元组和字符串)中选择子集的操作。它允许您根据索引范围来提取序列中的元素,而不必遍历整个序列。切片操作非常灵活,能够处理各种不同格式的序列。

1.2 如何使用切片?

切片的基本语法是:sequence[start:stop:step],其中:

sequence 是要切片的序列。
start 是切片的起始索引(包括该索引处的元素)。
stop 是切片的结束索引(不包括该索引处的元素)。
step 是切片的步长,表示每隔多少个元素取一个。默认值为1。
不同的切片格式和意义
基本切片:sequence[start:stop]

返回从 start 到 stop-1 的子序列。
带步长的切片:sequence[start:stop:step]

返回从 start 到 stop-1 的子序列,每隔 step 个元素取一个。
省略起始和结束索引:

如果省略 start,默认从序列的开头开始。
如果省略 stop,默认到序列的末尾结束。
示例代码
下面是一些切片操作的示例代码:

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

在这里插入图片描述

基本切片

subset1 = my_list[2:5]  # 返回 [3, 4, 5]

在这里插入图片描述

带步长的切片

subset2 = my_list[1:7:2]  # 返回 [2, 4, 6]

在这里插入图片描述

省略起始和结束索引

subset3 = my_list[:5]     # 返回 [1, 2, 3, 4, 5]
subset4 = my_list[3:]     # 返回 [4, 5, 6, 7, 8, 9]

在这里插入图片描述

逆序切片

subset5 = my_list[::-1]   # 返回 [9, 8, 7, 6, 5, 4, 3, 2, 1]

在这里插入图片描述

二、集合

2.1 什么是集合?

集合是Python中的一种数据容器,它是由不重复元素组成的无序集合。这意味着集合中的元素是唯一的,而且不按特定的顺序排列。

2.2 如何定义集合?

要定义一个集合,可以使用set() 构造函数。

my_set2 = set([3, 4, 5])

在这里插入图片描述

2.3 集合常用函数

1. add()

作用: add() 函数用于向集合中添加一个元素。

参数: 需要添加到集合中的元素。

返回值: None

示例代码:

my_set = set([1,2,3])

# 向集合中添加元素
my_set.add(4)  # my_set 现在是 {1, 2, 3, 4}

在这里插入图片描述

2. remove()

作用: remove() 函数用于从集合中移除指定元素。如果元素不存在于集合中,会引发 KeyError 错误。

参数: 要移除的元素。

返回值: None

示例代码:

my_set = set([1,2,3])

# 移除元素
my_set.remove(2)  # my_set 现在是 {1, 3}

# 尝试移除不存在的元素,会引发 KeyError 错误
my_set.remove(4)  # 引发 KeyError: 4

在这里插入图片描述

3. discard()

作用: discard() 函数用于从集合中移除指定元素。与 remove() 不同的是,如果元素不存在于集合中,discard() 不会引发错误。

参数: 要移除的元素。

返回值: None

示例代码:

my_set = set([1,2,3])

# 移除元素
my_set.discard(2)  # my_set 现在是 {1, 3}

# 尝试移除不存在的元素,不会引发错误
my_set.discard(4)  # my_set 仍然是 {1, 3}

在这里插入图片描述

4. pop()

作用: pop() 函数用于随机移除并返回集合中的一个元素。如果集合为空,会引发 KeyError 错误。

参数: 无参数。

返回值: 被移除的元素。

示例代码:

my_set = set([1,2,3])

# 随机移除并返回一个元素
random_element = my_set.pop()  # 可能返回 1、2 或 3

# 如果集合为空,会引发 KeyError 错误
empty_set = set()
empty_set.pop()  # 引发 KeyError: 'pop from an empty set'

在这里插入图片描述

5. clear()

作用: clear() 函数用于清空集合中的所有元素,使集合变为空集。

参数: 无参数。

返回值: None

示例代码:

my_set = set([1,2,3])

# 清空集合
my_set.clear()  # my_set 变成空集合 set()

在这里插入图片描述


总结

本文介绍了Python中的切片操作和集合。切片操作是用于从序列中选择子集的强大工具,可以根据需要取出部分元素。集合则是用于存储不重复元素的数据容器,适用于需要唯一性的情况。了解和掌握这些概念和技巧将有助于更高效地处理和操作数据。希望本文的示例代码和解释对您有所帮助,使您更加熟练地使用这些功能。

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

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

相关文章

电子器件系列52:达林顿晶体管阵列

其实以前已经学到过,最近在网上看到有的厂家的规格书全部是中文的,一个叫华冠,还有一个叫中科芯,我直接贴它们家的规格书比较方便 其实都是达林顿晶体管阵列 b站上好多视频,搜索达林顿阵列就可以了,这个讲得…

[应用推荐]Web Scraper——轻量数据爬取利器

对于日常的简单网页内容爬取,学习Python等投入太高,可以考虑使用这个Chrome工具。 以下为收集的具体信息,按需取用。 以下内容来自web ScraperWeb Scraper - The #1 web scraping extensionThe most popular web scraping extension. Start …

[计算机入门] Windows附件程序介绍(工具类)

3.14 Windows附件程序介绍(工具类) 3.14.1 计算器 Windows系统中的计算器是一个内置的应用程序,提供了基本的数学计算功能。它被设计为一个方便、易于使用的工具,可以满足用户日常生活和工作中的基本计算需求。 以下是计算器程序的主要功能&#xff1a…

栈的概念|动态顺序栈的详细解析|静态顺序栈链式栈的代码参考

前言 今天我们将学习数据结构中的栈,它是一种特殊的线性表。why——在前面我们学习顺序表、链表它们都属于线性表,它们可以在任意位置进行插入和删除数据;但是今天我们学习栈,它只能在一端进行插入和删除。下面我们就来学习并实现…

[补题记录] Atcoder Beginner Contest 322(E)

URL:https://atcoder.jp/contests/abc322 目录 E Probelm/题意 Thought/思路 Code/代码 E Probelm/题意 有 N 个改进计划,每个计划可以执行一次;有 K 个参数,每个计划可以将所有参数提升固定值,即计划 i 可以为第…

[C国演义] 第十三章

第十三章 三数之和四数之和 三数之和 力扣链接 根据题目要求: 返回的数对应的下标各不相同三个数之和等于0不可包含重复的三元组 – – 即顺序是不做要求的 如: [-1 0 1] 和 [0, 1, -1] 是同一个三元组输出答案顺序不做要求 暴力解法: 排序 3个for循环 去重 — — N^3, …

leetcode 343.整数拆分、96.不同的二叉搜索树

343.整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 10 输出: 36…

游戏设计模式专栏(五):三步学会原型模式

引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 原型模式在游戏开发中是一种重要的设计模式,…

做外贸独立站选Shopify还是WordPress?

现在确实会有很多新人想做独立站,毕竟跨境电商平台内卷严重,平台规则限制不断升级,脱离平台“绑架”布局独立站,才能获得更多流量、订单、塑造品牌价值。然而,在选择建立外贸独立站的过程中,选择适合的建站…

Spring Bean 作用域与生命周期

1 Spring Bean 作用域 Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、 request、session 和 global session,5 种作用域说明如下:singleton :单例…

布局与打包

属性栏直接输入值,比代码更直观方便。 打包:

五、运算表达式

5、运算表达式 1.3、运算表达式 运算表达式只能用于属性上,而不能在[[]]中使用 1.3.1、算术运算 thymeleaf可以使用以下算术运算符: , - , * , / , %; 示例 TestServlet中添加两个整数值 request.setAttribute("num1", 6); …

前端搭建名言生成器(内附源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ JS是什么?✨ 名言生成器✨ 页面搭建✨ 功能实现 ✨ 写在前面 在上周我们通过HTML、CSS实现了一个简单的‘我的相册‘页面的搭建,很多伙伴呢跟我说难道前端就只能做一些页面搭建的工作吗&#xff1…

带头双向循环链表

目录 1 链表的种类1.1 第一对1.2 第二对1.3 第三对1.4 常用 2 带头双向循环链表的实现2.1 创建2.2 初始化2.3 打印2.4 尾插2.5 尾删2.6 头插2.7 头删2.7.1 两个变量2.7.2 三个变量 2.8 查找x所在位置2.9 在pos节点前插入x2.10 删除pos节点2.11 销毁链表 1 链表的种类 1.1 第一…

AS环境,版本问题,android开发布局知识

项目模式下有一个build.gradle,每个模块也有自己的build.gradle Android模式下有多个build.gradle,汇总在一起。(都会有标注是哪个模块下的) C:\Users\Administrator\AndroidStudioProjects 项目默认位置 Java web项目与android项目的区别…

队列(循环数组队列,用队列实现栈,用栈实现队列)

基础知识 队列(Queue):先进先出的数据结果,底层由双向链表实现 入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为对头 常用方法 boolean offer(E e) 入队 E(弹出元素的类型) poll() 出队 peek() 获取队头 int size 获取队列元素个数 boolean isEmpty(…

Spring Boot项目中热点场景详解(万字总结)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★

循环读取图像实例

list image files (::mageDirectory,Extensions,Options:ImageFiles) par_join算子用于在调用程序中等待所有在单独的子线程中启动的程序或算子,方法是将par_start(启动的线程)添加到相应的程序行中( by adding the par_start qu…

CleanMyMac X4.14.1最新版本下载

CleanMyMac X是一个功能强大的Mac清理软件,它的设计理念是提供多个模块,包括垃圾清理、安全保护、速度优化、应用程序管理和文档管理粉碎等,以满足用户的不同需求。软件的界面简洁直观,让用户能够轻松进行日常的清理操作。 使用C…

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪,包括激光雷达(使用激光或红外线光束进行距离测量)、360 度激光雷达(可探测多个方向的障碍…