Python3入门基础(03)数据结构

news/2024/5/4 0:57:56/文章来源:https://blog.csdn.net/itanping/article/details/128492504

Python3 数据结构

Python3 中有四种标准的数据结构:

  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

Python 3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)。
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

1. List(列表)

  • 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。[:]遵循左闭右开原则。
  • 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
  • 和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
  • 与字符串不一样的是,列表中的元素是可以改变的。

Python-访问列表中的值

test_list = ['abc', 111, 0.12345, '列表', True]
test_sub_list = [-1, 111, 1.111, -1.111]# 元素索引
print(test_list)                  # 输出完整列表
print(test_list[0])               # 输出列表第一个元素
print(test_list[1:3])             # 从第二个开始输出到第三个元素
print(test_list[2:])              # 输出从第三个元素开始的所有元素
print(test_list[2:-2])            # 输出从第三个元素开始至倒数第二个的所有元素
print(test_sub_list * 2)          # 输出两次列表
print(test_list + test_sub_list)  # 连接列表
print(len(test_list))             # 列表大小'''
['abc', 111, 0.12345, '列表', True]
abc
[111, 0.12345]
[0.12345, '列表', True]
[0.12345]
[-1, 111, 1.111, -1.111, -1, 111, 1.111, -1.111]
['abc', 111, 0.12345, '列表', True, -1, 111, 1.111, -1.111]
5
'''

列表内置函数:

方法描述
list.append(x)把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
list.extend(L)通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。
list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。
list.remove(x)删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i])从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
list.clear()移除列表中的所有项,等于del a[:]。
list.index(x)返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x)返回 x 在列表中出现的次数。
list.sort()对列表中的元素进行排序。
list.reverse()倒排列表中的元素。
list.copy()返回列表的浅复制,等于a[:]。

列表内置函数使用实例:

test_list = [1, 111, 2.2, 3, 4]
test_sub_list = [-1, 111, 1.111, -1.111]# 内置函数
test_list.append(1)
print(test_list)                  # 把一个元素添加到列表的结尾。
test_list.insert(0, 1.1)          # 在指定位置插入一个元素。
test_list.extend(test_sub_list)   # 通过添加指定列表的所有元素来扩充列表。
print(test_list)                  # 在指定位置插入一个元素。
print(test_list.pop(1))           # 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。
print(test_list.index(111))       # 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
print(test_list.count(111))       # 返回 x 在列表中出现的次数。
test_list.remove(True)            # 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
print(test_list)
test_list.reverse()               # 倒排列表中的元素。
print(test_list)

1.1. 将列表当做堆栈使用

列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。

# 将列表当做堆栈使用
stack = [1, 2, 3, 4, 5]
stack.append(6)
print(stack)
print(stack.pop())
print(stack)
print(stack.pop())
print(stack.pop())
print(stack)

1.2. 将列表当作队列使用

也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

2. 元组(tuple)

与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 ( ),列表使用方括号 [ ]。元素之间都用逗号隔开。

与字符串一样,元组的元素不能修改。

tupleTest = ()     # 空元组
print(tupleTest)
tupleTest = (20,)  # 一个元素,需要在元素后添加逗号
print(tupleTest)tupleTest = ('abc', 111, 0.12345, '列表', True)
tinyTuple = (123, 'TEST')print(tupleTest)              # 输出完整元组
print(tupleTest[0])           # 输出元组的第一个元素
print(tupleTest[1:3])         # 输出从第二个元素开始到第三个元素
print(tupleTest[2:])          # 输出从第三个元素开始的所有元素
print(tinyTuple * 2)          # 输出两次元组
print(tupleTest + tinyTuple)  # 连接元组
tupleList = (tupleTest, tinyTuple)
print(tupleList)
# tupleTest[0] = 11             # 修改元组元素的操作是非法的:TypeError: 'tupleTest' object does not support item assignment'''
()
(20,)
('abc', 111, 0.12345, '列表', True)
abc
(111, 0.12345)
(0.12345, '列表', True)
(123, 'TEST', 123, 'TEST')
('abc', 111, 0.12345, '列表', True, 123, 'TEST')
(('abc', 111, 0.12345, '列表', True), (123, 'TEST'))
'''

3. 集合(set)

由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

  • 基本功能是进行成员关系测试和删除重复元素。
  • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
  • 重复的元素在取值时会被自动去掉。
sites = {'Google', 'Taobao', 'WeiXin', 'Facebook', 'Zhihu', 'Baidu', 'WeiXin'}print(sites)   # 输出集合,重复的元素被自动去掉
"""
{'Zhihu', 'Taobao', 'Google', 'WeiXin', 'Facebook', 'Baidu'}
"""

集合运算:

# set可以进行集合运算
a = set('Gooooooooooooogllleee')
b = set('Taobao Gou')print(a)
print(a - b)     # a 和 b 的差集
print(a | b)     # a 和 b 的并集
print(a & b)     # a 和 b 的交集
print(a ^ b)     # a 和 b 中不同时存在的元素
"""
{'e', 'l', 'g', 'G', 'o'}
{'e', 'l', 'g'}
{'e', 'a', 'u', 'l', 'g', 'G', 'b', 'T', ' ', 'o'}
{'G', 'o'}
{'e', 'l', 'g', 'a', 'u', 'b', 'T', ' '}
"""

4. 字典(dictionary)

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

  • 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
  • 键(key)必须使用不可变类型。
  • 在同一个字典中,键(key)必须是唯一的。

Python-访问字典中的值

dict = {}  # 空字典
dict['one'] = "1 - Python学习"
dict[2] = "2 - Python编程"
tinyDict = {'name': 'Python', 'code': 1, 'site': 'www.baidu.com'}print(dict['one'])        # 输出键为 'one' 的值
print(dict[2])            # 输出键为 2 的值
print(tinyDict)           # 输出完整的字典
print(tinyDict.keys())    # 输出所有键
print(tinyDict.values())  # 输出所有值'''
1 - Python学习
2 - Python编程
{'name': 'Python', 'code': 1, 'site': 'www.baidu.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['Python', 1, 'www.baidu.com'])
'''

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

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

相关文章

磨金石教育摄影技能干货分享|优秀艺术类摄影作品欣赏

前面我们分析过纪实类摄影和创意类摄影,艺术类还是第一次讲。 它与纪实类的不同点在于,艺术类摄影更注重作者的主观感受,更侧重个人创造性。 摄影师和画家一样,在经历过人生的挫折、现实与理想交织,内心世界往往是丰富…

塔望3W消费战略案丨聚焦川崎火锅料,回归赛道一梯队

川崎 火锅料 客户:上海新川崎食品有限公司 品牌:川崎 服务:3W消费战略 品牌全案 项目背景 上世纪90年代,一句“吃火锅,没川崎怎么行”,响彻大江南北,让川崎走进千家万户,成为当时…

scaner从外网到内网域渗透笔记

scaner 从外网到内网域渗透 1.环境配置 1.1靶场信息 用到的虚拟机共有三个 分别是 12server-db 、12-dc 、web1 12server-db、web1 这两个可以使用桥接或者nat模式根据需求可以设置 网卡1 12-dc用的是VMnet 19 这台机子已经绑定ip 主机名ip账号和密码web1192.168.0.160we…

我司赤城弘一CEO受邀参加东盟与中日韩中小企业人工智能产业论坛并做主旨发言。

我司赤城弘一CEO受邀参加东盟与中日韩中小企业人工智能产业论坛并做主旨发言。 一、活动背景 为推动东盟与中日韩(103)中小企业服务联盟务实合作,帮助中小企业提高生产力和技术创新能力,进一步提高国际化发展水平,促进…

2023新一代设备管理系统助力企业高效化巡检

设备数量和种类都比较多的情况下,工厂设备管理员的工作往往压力巨大,因为生产环环相扣,每一个环节如果出现问题,都会影响到生产。如果隐患不能及时处理,会影响设备的正常和安全运转,严重的会波及到周围相关…

Python3 | vscode配置环境

vscode版本:1.74.2python版本:3.9.0win10系统 准备工作,在win10系统 1,安装python3,配置环境变量2,安装vscode 接下来:就可以在vscode配置python环境 1,下载和安装python插件 快…

yapi的安装

Yapi的安装 Yapi是一款不错的接口管理软件,我主要用它来进行接口Mock。 Yapi安装所需环境: Node.js(7.6)Mongodb(2.6)git 各环境安装地址: git:https://git-scm.com/downloadsN…

mac vscode安装dart

1.安装Dart 1.安装下载Dart的工具 官网:https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如果遇到 zsh: command not found: brew /bin/zsh -c "$(curl -fsSL https://gite…

【图像算法】pytesseract简单实现图片数字识别

【前置目的】 识别视频中是否包含目标元素; 抽象自动化,就是处理一段含有时间戳的视频; 再核心就是对视频进行图片裁减,识别出图片中的数字,做数学计算延时。 【学习地址】 环境:mac、python3、pytesserac…

强大的ANTLR4(2)

每次在命令行里输入文本有点麻烦&#xff0c;可以将hello slb保存于hello.txt文本文件中&#xff0c;然后运行命令&#xff1a; antlr4-parse Hello.g4 r -tokens hello.txt出现如下内容&#xff1a; [0,0:4hello,<hello>,1:0] [1,6:8slb,<ID>,1:6] [2,9:8<EO…

双脚在路上,钢笔在手里,想法在脑中,2023年CSDN将在心头

☔️&#xff08;一&#xff09;行走过的道路 一年的时间说长不长&#xff0c;说短不短&#xff0c;所渡过时光的长短在于你是否留意你曾走过的路。 &#x1f434;① 记得2022年初我所许下的flag&#xff0c;是要在CSDN平台上运用今年一年的时间撰写超50篇的技术文章&#xff0…

智能家居创意DIY之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时&#xff0c;它们可以通过声控、触控、红外等方式进行控制&#xff0c;或者带有调光开关&#xff0c;让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块&#xff0c;可与手机、家庭智能助手、或其他智能…

语音转换之CycleGan-VC2:原理与实战

非平行语音转换CycleGAN 之前学习了传统统计学习里的经典的语音转换模型GMM。随着深度学习的发展&#xff0c;出现了更好的语音转换方法&#xff0c;今天学习较为经典的CycleGan。 平行语音转换一般流程 典型代表就是基于GMM的语音转换。平行数据就是说源语音和目标语音一一…

【 Tomcat服务器】

文章目录二、Web服务器2.1 概念2.1.1 什么是Web2.1.2 什么是Web服务器2.2 常见Web服务器2.3 Tomcat服务器2.3.1 Tomcat的下载2.3.2 Tomcat的安装2.3.3 Tomcat的目录结构2.3.4 Tomcat的启动2.3.5 Tomcat的停止运行所需jar包2.3.5 Tomcat的停止2.3.6 修改Tomcat端口号2.3.7 项目部…

美容门店信息化管理系统该如何搭建?不妨参考一下百数

随着人们的生活水平越来越高&#xff0c;人们在解决了温饱问题之后有了更多的追求。其中美容正在成为不少人新的必做项目&#xff0c; 迎合了人们对于爱美的需求。目前我国美容机构市场规模已超过4500亿元&#xff0c;行业从业人员超过3000万。据国家工商联统计数字显示&#x…

宝藏又小众的东方行走rpg制作大师素材网站分享

看到大家都在问东方行走rpg制作大师素材&#xff0c;既要免费又要质量好&#xff0c;数量还要多&#xff0c;小编好不容易挖到了宝藏素材网站哦&#xff0c;资源优质数量庞大&#xff0c;使用体验也很好&#xff0c;要是需要的话&#xff0c;赶紧看一看&#xff0c;小编会给大家…

Redis实现全局唯一id,实现优惠卷秒杀的下单功能

Redis实现全局唯一id public class RedisIdWorker {private StringRedisTemplate stringRedisTemplate;public RedisIdWorker(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate stringRedisTemplate;}//开始时间戳private static final long BEGIN_TIMEST…

怎么调图片分辨率?怎么改图片分辨率?

许多考生在提交报名证件照片的时候&#xff0c;都因为图片分辨率不符合规定导致上传失败&#xff0c;所以今天小编就来告诉大家如何调整图片分辨率&#xff0c;其实只要通过专业的图片修改分辨率工具就可以轻松解决。这里推荐一款在线修改分辨率的软件&#xff0c;不用下载即可…

Java重点源码回顾——HashMap1.7

1. 概述 public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, SerializableHashMap在我们的日常使用中非常多&#xff0c;所以今天来阅读下它的源码&#xff0c;了解它具体的设计思想&#xff0c;能够帮助我们扩宽视野。 H…

SpringSecurity(二十四)--OAuth2:使用JWT和加密签名(下)非对称密钥加密

一、前言 由于上文对称密钥涉及到的内容比较多&#xff0c;所以这一节的非对称密钥加密拆开成这一节单独讲解。 所以大家尽量先阅读完上一章的内容后再浏览这一章内容会更好。 二、使用通过JWT和非对称密钥签名的令牌 本节将实现OAuth2身份验证的一个示例&#xff0c;其中授…