【编程基础之Python】8、Python复合数据类型

news2024/11/22 10:25:35

【编程基础之Python】8、Python复合数据类型

  • Python复合数据类型
    • 列表(List)
      • 创建列表
      • 访问元素
      • 内置方法
      • 列表操作
    • 元组(Tuple)
      • 创建元组
      • 访问元素
    • 集合(Set)
      • 创建集合
      • 基本操作
      • 其他操作
    • 字典(Dictionary)
      • 创建字典
      • 访问元素
      • 基本操作
  • 写在后面

Python复合数据类型

除了上述提到的几种基本数据类型,Python还提供了一些常用的复合数据类型,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。

列表(List)

列表是一种有序的数据类型,可以存储多个任意类型的数据。列表使用方括号[ ]来表示,每个元素之间用逗号隔开。

创建列表

下面是一个创建列表的例子:

lst = [1, 2, 3, 'four', 'five']
print(type(lst), lst)

image-20230303105244680

访问元素

列表的元素可以通过索引来访问,索引从0开始。

例如,要访问上面列表中的第一个元素,可以使用以下代码:

lst = [1, 2, 3, 'four', 'five']
print(lst[0])

image-20230303105343566

列表还支持切片操作,可以使用类似于字符串的切片语法来访问其中的元素。

例如,要访问列表中的前三个元素,可以使用以下代码:

lst = [1, 2, 3, 'four', 'five']
print(lst[1:3])

image-20230303105624258

内置方法

除了基本的访问和切片操作,列表还支持一系列的方法,列表有很多常用的方法,下面是一些常用的列表方法:

  • append():向列表末尾添加一个元素。
  • insert():向列表指定位置插入一个元素。
  • remove():从列表中移除指定的元素。
  • pop():从列表末尾移除一个元素。
  • sort():对列表进行排序。
  • reverse():将列表翻转。

接下来是一个例子,展示了如何使用这些方法:

my_list = [1, 2, 3, 4, 5]
print("原始列表:", my_list)
# 添加一个元素
my_list.append(6)
print("添加一个元素:", my_list)
# 在指定位置插入一个元素
my_list.insert(2, "hello")
print("在指定位置插入一个元素:", my_list)
# 移除指定的元素
my_list.remove(4)
print("移除指定的元素:", my_list)
# 移除末尾的元素
my_list.pop()
print("移除末尾的元素:", my_list)
# 对列表进行排序
my_list.sort()
print("对列表进行排序:", my_list)
# 将列表翻转
my_list.reverse()
print("将列表翻转:", my_list)

image-20230303105819394

列表操作

除了列表自身的一些方法外,Python还提供了一些方法可以操作列表:

  • len():求列表中元素的个数。
  • +:合并两个列表。
  • *:重复列表元素。
  • in:判断元素是否在列表内。
  • for:对列表进行遍历。

接下来是一个例子,展示了如何使用这些方法:

my_list1 = [1, 2, 3]
my_list2 = ["A", "B", "C"]
print("原始列表1:", my_list1)
print("原始列表2:", my_list2)
# 求列表长度
ln = len(my_list1)
print("求列表长度:", ln)
# 合并两个列表
my_list3 = my_list1 + my_list2
print("合并两个列表:", my_list3)
# 重复列表元素
my_list4 = my_list1 * 3
print("重复列表元素:", my_list4)
# 判断元素是否在列表内
ex1 = 3 in my_list1
ex2 = 3 in my_list2
print("判断元素是否在列表内:", ex1, ex2)
# 对列表进行遍历
for x in my_list1:
    print("对列表进行遍历:", x)

image-20230303110202971

元组(Tuple)

元组和列表类似,也是一种有序的数据类型,可以存储多个任意类型的数据。但是元组一旦创建,就不能再修改其中的元素。

元组使用圆括号 ( ) 来表示,每个元素之间用逗号隔开。

创建元组

下面是一个创建元组的例子:

tuple1 = (1, 2, 3, 'four', 'five')
print(tuple1)

image-20230303110655061

访问元素

元组的访问和切片操作和列表类似,也是通过索引和切片语法来实现。

tuple1 = (1, 2, 3, 'four', 'five')
tuple2 = ("A", "B", "C")
print("通过索引访问:", tuple1[2])
print("通过切片访问:", tuple1[1:3])
print("元组长度:", len(tuple1))
print("元素重复:", tuple1 * 3)
print("元组合并:", tuple1 + tuple2)
print("元素判断:", "A" in tuple1, "A" in tuple2)
for x in tuple2:
    print("对元组进行遍历:", x)

image-20230303111236890

集合(Set)

集合是一种无序、不重复的数据类型,用于去重或者判断一个元素是否存在。集合使用花括号 { } 来表示,每个元素之间用逗号隔开。

创建集合

下面是一个创建集合的例子:

set1 = {1, 2, 3, 'four', 'five'}
print(set1)

image-20230303114356893

基本操作

集合的操作包括添加元素、删除元素、查找、遍历、求并集、交集等。

  • add(element):向集合中添加元素
  • update(set):向集合中添加多个元素,将集合更新为和指定集合的并集
  • discard(element):移除集合中指定的元素
  • remove(element):移除集合中指定的元素,如果不存在则抛出异常
  • pop():随机移除一个元素并返回,由于集合是无序的,因此无法确定删除的是哪个元素
my_set = {1, 2, 3}
# 添加不存在的元素
my_set.add(4)
print("添加不存在的元素:", my_set)
# 添加已经存在的元素
my_set.add(2)
print("添加已经存在的元素:", my_set)
# 向集合中添加多个元素
my_set.update([5, 6])
my_set.update((7, 8))
my_set.update({9, 10})
print("向集合中添加多个元素:", my_set)
# 移除集合中指定的元素
my_set.remove(3)
my_set.discard(5)
pp = my_set.pop()
print("移除集合中指定的元素:", my_set, pp)
for x in my_set:
    print("遍历集合:", x)

image-20230303115709701

其他操作

可以使用一些内置的方法来对集合进行操作。以下是一些常用的集合方法:

  • clear():清空集合
  • copy():复制集合
  • difference(set):返回集合和指定集合的差集
  • difference_update(set):移除集合中和指定集合相同的元素
  • intersection(set):返回集合和指定集合的交集
  • intersection_update(set):保留集合中和指定集合相同的元素
  • isdisjoint(set):判断两个集合是否没有共同元素
  • issubset(set):判断一个集合是否是另一个集合的子集
  • issuperset(set):判断一个集合是否是另一个集合的超集
  • symmetric_difference(set):返回集合和指定集合的对称差集
  • symmetric_difference_update(set):将集合更新为和指定集合的对称差集
  • union(set):返回集合和指定集合的并集

下面是一些示例代码:

# 创建集合
fruits = {"apple", "banana", "cherry"}
# 添加元素
fruits.add("orange")
print(fruits)  # 输出: {'banana', 'apple', 'orange', 'cherry'}
# 移除元素
fruits.remove("banana")
print(fruits)  # 输出: {'apple', 'orange', 'cherry'}
# 清空集合
fruits.clear()
print(fruits)  # 输出: set()
# 复制集合
fruits = {"apple", "banana", "cherry"}
fruits_copy = fruits.copy()
print(fruits_copy)  # 输出: {'banana', 'apple', 'cherry'}
# 求交集
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
z = x.intersection(y)
print(z)  # 输出: {'apple'}
# 求并集
x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}
z = x.union(y)
print(z)  # 输出: {'banana', 'apple', 'google', 'cherry', 'microsoft'}
# 判断是否是子集
x = {"a", "b", "c"}
y = {"f", "e", "d", "c", "b", "a"}
z = x.issubset(y)
print(z)  # 输出: True

字典(Dictionary)

字典是一种无序的键值对(key-value)数据类型,可以用来存储任意类型的数据。字典使用花括号 { } 来表示,每个键值对之间用冒号 : 隔开,键值对之间用逗号隔开。

创建字典

可以使用花括号 {} 或者 dict() 函数来创建字典。使用花括号创建字典时,键-值对之间用冒号 : 分隔,每个键-值对之间用逗号 , 分隔。

# 使用花括号创建字典
my_dict1 = {'apple': 3, 'banana': 5, 'orange': 2}
print(my_dict1)
# 使用 dict() 函数创建字典
my_dict2 = dict(apple=3, banana=5, orange=2)
print(my_dict2)

image-20230303120531172

访问元素

可以使用键来访问字典中的元素。如果键不存在,则会抛出 KeyError 异常。

my_dict = {'apple': 3, 'banana': 5, 'orange': 2}

print(my_dict['apple'])  # 输出 3
print(my_dict['pear'])   # 抛出 KeyError 异常

image-20230303120745655

可以使用 get() 方法来访问字典中的元素。如果键不存在,则会返回 None 或者指定的默认值。

my_dict = {'apple': 3, 'banana': 5, 'orange': 2}

print(my_dict.get('apple'))      # 输出 3
print(my_dict.get('pear'))       # 输出 None
print(my_dict.get('pear', 0))    # 输出 0

image-20230303120949098

基本操作

Python字典包含了以下内置方法:

  • clear():删除字典内所有元素
  • copy():返回一个字典的浅复制
  • get(key, default=None):返回指定键的值,如果值不在字典中返回default值。
  • has_key(key):如果键在字典dict里返回true,否则返回false。
  • items():以列表返回可遍历的(键, 值) 元组数组。
  • keys():以列表返回一个字典所有的键。
  • values():以列表返回字典中的所有值。

写在后面

在本篇文章中,我们介绍了Python的几种复合数据类型:列表、元组、集合、字典,同时,我们还讨论了它们的一些操作。

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

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

相关文章

4.ffmpeg命令转码规则、过滤器介绍、手动流map选项

在上章我们学习了ffmpeg命令行帮助以及选项查找 本章我们来深入学习ffmpeg命令转码规则、过滤器介绍、手动流map选项 参考链接: 1.ffmpeg命令行转码流程 ffmpeg命令行转码流程如下图所示: 对应中文则是: 步骤如下所示: ffmpeg调用libavformat库(包含解复用器)来读取输入文件…

Linux -- 查看进程 PS 命令 详解

我们上篇介绍了, Linux 中的进程等概念,那么,在Linux 中如何查看进程呢 ??我们常用到的有两个命令, PS 和 top 两个命令,今天先来介绍下 PS 命令~!PS 命令 :作用 &#x…

C语言拔高知识——指针的进阶(万字大文超详细)

在之前的文章中,我已经讲解过了初阶指针的内容,今天就来讲一讲指针的进阶! 上篇指针地址:保姆式指针讲解,超详细,适合初学者_指针详解_陈大大陈的博客-CSDN博客 目录 1. 字符指针 2. 指针数组 3. 数组指…

3年测试经验的人来面试,简历都没写明白,一开口就要给20K的offer?

​我最近阅读了大约15份简历,他们都在申请我的团队的测试工程师职位。但是没有一份表达清楚了他是如何进行测试的。 下面我摘录了一些 信息: 几乎所有的应聘者都罗列了成串儿的他们熟悉的“技术”(包括但不限于….Net, Unix&#…

c++基础/类和对象

c基础 2.1名字空间 namespace 防止命名冲突 说明&#xff1a;名字空间可以在全局作用域或其他作用域&#xff08;另一个名字空间&#xff09;内部定义&#xff0c;但不能在函数或类的内部定义。 使用&#xff1a; #include<iostream> using namespace std; //std中包…

【C/C++ 数据结构】-八大排序之 冒泡排序快速排序

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【C/C数据结构与算法】 分享&#xff1a;那我便像你一样&#xff0c;永远躲在水面之下&#xff0c;面具之后&#xff01; ——《画江湖之不良人》 主要内容&#xff1a;八大排序选…

前端构建工具大盘点:gulp、webpack、vite、rollup、esbuild、snowpack、babel、parcel、swc、tsc

文章目录背景分类转译器打包器对比gulp VS webpackBundle vs Bundleless&#xff08;代表就是webpack VS vite&#xff09;其他比较个人理解总结官网背景 做前端也有好多年了&#xff0c;从最早的 jQuery 时代到现在的三大框架&#xff0c;这过程中用到了很多构建工具&#xf…

婴幼儿常见八大疾病及护理方法

在1岁之前&#xff0c;婴儿的体质还没有完全发育&#xff0c;很容易生病&#xff0c;大多数婴儿在1岁之后都会更好。今天&#xff0c;新的稀有婴儿育儿专家组织了一些婴儿最容易患的疾病和护理方法。1、新生儿黄疸宝宝出生后&#xff0c;你可能会注意到他的皮肤发黄。别担心&am…

Netty学习(三):Netty线程模型和代码示例

〇、前言网络编程的基本线程模型&#xff0c;详见&#xff1a;Netty学习&#xff08;二&#xff09;&#xff1a;线程模型一、工作原理简图Netty主要基于主从 Reactors 多线程模型&#xff08;如下图&#xff09; 做了一定的改进&#xff0c;其中主从Reactor 多线程模型有多个R…

11_MySQL数据处理(增删改)

1. 插入数据1.1 实际问题解决方式&#xff1a;使用 INSERT 语句向表中插入数据。1.2 方式1&#xff1a;使用VALUES使用这种语法一次只能向表中插入一条数据。情况1&#xff1a;为表的所有字段按默认顺序插入数据INSERT INTO 表名 VALUES (value1,value2,....);值列表中需要为表…

Windows安装Liberica JAVA8

在浏览器打开下载&#xff1a;Liberica JAVA。 点击链接"下载MSI"相对应的Microsoft Windows版本。 下载后完成后&#xff0c;验证的文件&#xff0c;通过比较其大小对你的驱动器和下载的页。 一个更加先进的方法来验证检验和在PowerShell&#xff1a; (Get-FileHas…

软件测试之测试环境--XAMPP

1. 测试环境 Linux下的环境搭建 LNMP: LinuxNginxMysqlphp项目 Windows下的环境搭建 WAMP: WindowsapacheMysqlphp项目 2. Xampp安装及使用 XAMPP包括Apache、MySQL、PHP、PERL&#xff0c;直接解压缩&#xff0c;没有复杂的安装过程&#xff0c;强烈推荐初学者使用。 到目前…

【C/C++基础知识点】输出n位斐波那契数列

目录 前言什么是斐波那契数列兔子的故事小知识点收尾前言 在软件行业已经有快十年,技术虽然一般般,但是足够应付额解决编程入门的相关问题! 都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助! 为什么要写收费专栏,其实原因很简单,时间就…

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

PLSQL创建新用户并导入导出.dmp文件

一、登录管理员账号 用户名密码登录身份说明systemmanagerSYSDBA 或 NORMAL不能以 SYSOPER 登录&#xff0c;可作为默认的系统管理员syschange_on_installSYSDBA 或 SYSOPER不能以 NORMAL 登录&#xff0c;可作为默认的系统管理员scotttigerNORMAL普通用户aqadmaqadmSYSDBA 或…

目标检测论文阅读:RepPoints算法笔记

标题&#xff1a;RepPoints: Point Set Representation for Object Detection 会议&#xff1a;ICCV2019 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9009032/ 官方代码&#xff1a;https://github.com/microsoft/RepPoints 作者单位&#xff1a;北京大学、清华…

Jetpack Compose 深入探索系列六:Compose runtime 高级用例

Compose runtime vs Compose UI 在深入讨论之前&#xff0c;非常重要的一点是要区分 Compose UI 和 Compose runtime。Compose UI 是 Android 的新 UI 工具包&#xff0c;具有 LayoutNodes 的树形结构&#xff0c;它们稍后在画布上绘制其内容。Compose runtime 提供底层机制和…

qsort快速排序的实现以及模拟实现qsort的功能(狠狠的拿捏)

当你为错过太阳而哭泣的时候&#xff0c;你也要再错过群星了。 --泰戈尔 目录 一.qsort快速排序的实现 二.模拟实现一个qsort功能的函数 一.qsort快速排序的实现 下面是 qsort() 函数的声明&#xff1a; void qsort(void *base, size_t nitems, size_t size, int (…

Java——电话号码的字母组合

题目链接 leetcode在线oj题——电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 题目示例…

高压功率放大器在压电驱动器的研究中的应用

实验名称&#xff1a;压电驱动器的电致振动特性研究研究方向&#xff1a;压电驱动器测试目的&#xff1a;旨在分析压电驱动器的电激励振动特性。以双晶压电悬臂梁为对象&#xff0c;基于能量法和热力学平衡方程推导了压电悬臂梁在电压激励下的强迫振动微分方程。利用自行搭建的…