Python中容器类型的数据

news2024/12/27 12:55:39

目录

序列

序列的索引操作

加和乘操作

切片操作

成员测试

列表

创建列表

追加元素

插入元素

替换元素

删除元素

元组

创建元组

元组拆包

集合

创建集合

修改集合

字典

创建字典

修改字典

访问字典视图

遍历字典

若我们想将多个数据打包并且统一管理,应该怎么办? Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。

序列

序列是一种可迭代的、元素有序的容器类型的数据。序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。

序列的索引操作

序列中的元素都是有序的,每一个元素都带有序号,这个序号叫作索引。索引有正值索引和负值索引之分。

序列示例:Hello字符串

>>>a='Hello'
>>>a[0]
'H'
>>>a[-5]
'H'
>>>max(a) # max()函数返回最后一个元素
'o'
>>>min(a) # min()函数返回第一个元素
'H'
>>>len(a) # len()函数用于获取序列的长度
5

加和乘操作

加(+)和乘(*)运算符也可以用于序列中的元素操作。加(+) 运算符可以将两个序列连接起来,乘(*)运算符可以将两个序列重复多次。

>>>a='Hello'
>>>a*2
'HelloHello'
>>>a='Hello'+','
'Hello,'
>>>a+='World'
>>>a
'Hello,World'

切片操作

序列的切片(Slicing)就是从序列中切分出小的子序列。切片运算符的语法形式为[start:end:step]。其中,start是开始索引 ,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以为负整数)。

注意:切下的小切片包括start位置的元素,但不包括end位置的元素 ,start和end都可以省略。

>>>a='Hello'
>>>a[1:3]
'el'
>>>a[:3]//省略了开始索引,默认开始索引为0,所以a[:3]和a[0:3]的切片结果是一样的
'Hel'
>>>a[0:3]
'Hel'
>>>a[0:]//省略了结束索引,默认结束索引是序列的长度,即5.所以a[0:]与a[0:5]的切片结果是一样的
'Hello'
>>>a[0:5]
'Hello'
>>>a[:]//省略了开始索引和结束索引
'Hello'
>>>a[1:-1]//使用了负值索引
'ell'

当步长不为1时

>>>a='Hello'
>>>a[1:5]
'ello'
>>>a[1:5:2]
'el'
>>>a[0:3:2]
'Hl'
>>>a[0:3:3]
'H'

成员测试

成员测试运算符有两个:in和not in,in用于测试是否包含某一个元素,not in用于测试是否不包含某一个元素。

>>>a='Hello'
>>>'e' in a
True
>>>'E' not in a
True

列表

列表(list)是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素。

创建列表

创建列表有两种方法。

1 list(iterable)函数:参数iterable是可迭代对象(字符串、列表、 元组、集合和字典等)。

2 [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔,列表元素需要使用中括号括起来。

>>>[20,10,50,30]
[20,10,50,30]
>>>[] # 创建空列表
[]
>>>['Hello','World',1,2,3] # 创建一个字符串和整数混合的列表
['Hello','World',1,2,3]
>>>a=[10]
>>>a
[10]
>>>a[10,] # 列表的每一个元素后面都跟着一个逗号,但经常省略这个逗号
>>>a
[10]
>>>list('Hello')
['H','e','l','l','o']

追加元素

列表是可变的序列对象,列表可以追加元素。

1 在列表中追加单个元素时,可以使用列表的append(x)方法。

2 在列表中追加多个元素时,可以使用加(+)运算符或列表的extend(x)方法。

>>>list=[20,10,50,30]
>>>list.append(80)
>>>list
[20,10,50,30,80]
>>>list=[20,10,50,30]
>>>t=[1,2,3]
>>>list+=t
>>>list
[20,10,50,30,1,2,3]
>>>list=[20,10,50,30]
>>>list.extend(t)
>>>list
[20,10,50,30,1,2,3]

插入元素

想向列表中插入元素时,可以使用列表的list.insert(i,x)方法, 其中,i指定索引位置,x是要插入的元素。

>>>list=[20,10,50,30]
>>>list.insert(2,80)
>>>list
[20,10,80,50,30]

替换元素

想替换列表中的元素时,将列表下标索引元素放在赋值符号(=) 的左边,进行赋值即可。

>>>list=[20,10,50,30]
>>>list[1]=80
>>>list
[20,80,50,30]

删除元素

想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素,如果找到多个匹配的元素,则只删除第一个匹配的元素。

>>>list=[20,10,80,50,30]
>>>list.remove(80)
>>>list
[20,10,50,30]

元组

元组(tuple)是一种不可变序列类型。

创建元组

创建元组时有两种方法。

1 tuple(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。

2 (元素1,元素2,元素3,⋯):指定具体的元组元素,元素之间以逗号分隔。对于元组元素,可以使用小括号括起来,也可以省略小括号。

>>>21,32,43,45 # 创建一个有4个元素的元组,创建元组时使用小括号把元素括起来或省略
(21,32,43,45)
>>>('Hello','World') # 创建字符串元组
('Hello','World')
>>>('Hello','World',1,2,3) # 创建字符串和整数混合的元组
('Hello','World',1,2,3)
>>>tuple([21,32,43,45])
(21,32,43,45)
>>>t=1, # 创建只有一个元素的元组,元素后面的逗号不能省略
>>>t
(1,)
>>>type(t)
<class 'tuple')
>>>t=(1,)
>>>type(t)
<class 'tuple'>
>>>a=() # 通过()可以创建空元组
>>>type(a)
<class 'tuple'>

元组拆包

创建元组,并将多个数据放到元组中,这个过程被称为元组打包。与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。

>>>s_id,s_name=(102,'张三')
>>>s_id
102
>>>s_name
'张三'

集合

集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据。

创建集合

序列中的元素是有序的,集合中的元素是无序的,但集合中的元素不能重复。

我们可以通过以下两种方式创建集合。

1 set(iterable)函数:参数iterable是可迭代对象(字符串、列表、 元组、集合和字典等)。

2 {元素1,元素2,元素3,⋯}:指定具体的集合元素,元素之间以逗号分隔。对于集合元素,需要使用大括号括起来。

>>>set('Hello')
{'o','H','e','l'}
>>>{20,15,10,30,20,15}
{10,20,30,15}
>>>b={}
>>>type(b)
<class 'set'>

修改集合

修改集合类似于修改列表,可以向其中插入和删除元素。修改可变集合有如下的常用方法。

add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。

remove(elem):删除元素,如果元素不存在,则抛出错误。

clear():清除集合。

>>>s_set={'张三','李四','王五'}
>>>s_set.add('董六')
>>>s_set
{'王五','张三','李四','董六'}
>>>s_set.remove('李四')
>>>'李四' in s_set
False
>>>s_set.clear()
>>>S_set
set()

字典

字典(dict)是可迭代的、通过键(key)来访问元素的可变的容器类型的数据。

字典由两部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。在键视图中,键和值是成对出现的。

创建字典

我们可以通过以下两种方法创建字典。

1 dict()函数。

2 {key1:value1,key2:value2,...,key_n:value_n}:指定具体的字典键值对,键值对之间以逗号分隔,最后用大括号括起来。

>>>dict({102:'张三',105:'李四',109:'王五'}) # 通过dict()函数创建字典,参数是另外一个字典
{102:'张三',105:'李四',109:'王五'}
>>>dict(((102:'张三'),(105:'李四'),('109:'王五'))) # 通过dict()函数创建字典,参数是一个元组,在这个元组中包含三个只有两个元素的元组
{102:'张三',105:'李四',109:'王五'}
>>>dict([(102,'张三'),(105,'李四'),(109,'王五')]) # 通过dict()函数创建字典,参数是一个列表,在这个列表中包含三个只有两个元素的元组
{102:'张三',105:'李四',109:'王五'}
>>>dict(zip([102,105,109],['张三','李四','王五'])) # 通过zip()函数将两个可迭代对象打包成元组,第一个参数是字典的键,第二个参数是字典值,它们包含的元素个数相同,并且一一对应
{102:'张三',105:'李四',109:'王五'}
>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict1
{102:'张三',105:'李四',109:'王五'}

修改字典

字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。

>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict[109] # 通过字典键返回对应的值
'王五'
>>>dict[110]='董六' # 通过110键赋值,如果此时在字典中没有110键,则添加110:'董六'键值对
>>>dict1
{102:'张三',105:'李四',109:'王五',110:'董六'}
>>>dict1[109] # 将109键对应的值替换为'张三'
>>>dict1
{102:'张三',105:'李四',109:'张三',110:'董六'}
>>>dict1.pop(105) # 使用字典的pop(key)方法删除键值对,返回删除的值
'李四'
>>>dict1
{102:'张三',109:'张三',110:'董六'}

访问字典视图

我们可以通过字典中的三种方法访问字典视图。

items():返回字典的所有键值对视图。

keys():返回字典键视图。

values():返回字典值视图。

>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict1.items()
dict_items([(102:'张三'),(105:'李四'),(109:'王五')])
>>>list(dict1.items())
[(102,'张三'),(105,'李四'),(109,'王五')]
>>>dict1.keys()
dict_keys([102,105,109])
>>>list(dict1.keys())
[102,1055,109]
>>>dict1.values()
dict_values(['张三','李四','王五'])
>>>list(dict1.values())
['张三','李四','王五']

遍历字典

遍历就是从容器中取出每一个元素的过程,在进行序列和集合遍历时使用for循环就可以。但字典有两个视图,在遍历时,可以只遍历值视图,也可以只遍历键视图,还可以同时遍历,这些便利都是通过for循环实现的。

s_dict={102:'张三',105:'李四',109:'王五'}
print('---遍历键---')
for s_id in s_dict.keys():
    print('学号:'+str(s_id))
print('---遍历值---')
for s_name in s_dict.values():
    print('学生:'+s_name)
print('---遍历键:值---')
for s_id,s_name in s_dict.items():
    print('学号:{0}-学生:{1}'.format(s_id,s_name))

输出

---遍历键---
学号:102
学号:105
学号:109
---遍历值---
学生:张三
学生:李四
学生:王五
---遍历键:值---
学号:102-学生:张三
学号:105-学生:李四
学号:109-学生:王五

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

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

相关文章

分布式虚拟文件系统,如何实现多种存储系统的融合

随着大数据技术和人工智能技术的发展&#xff0c;各种框架应运而生&#xff0c;比如大数据领域中的MapReduce和Spark&#xff0c;人工智能领域中的TensorFlow和PyTorch等。为了给不同的计算框架提供存储服务&#xff0c;存储的服务类型也是很多&#xff0c;常见的如AWS的S3存储…

自然语言nlp学习四

5-5 BMTrain--ZeRO_哔哩哔哩_bilibili 5-6 BMTrain--Pipeline Parallel (流水线并行)_哔哩哔哩_bilibili 5-12 BMCook--背景介绍_哔哩哔哩_bilibili

梦幻水母生图咒语

中文&#xff1a; 珍珠和透明水晶水母漂浮在水池中&#xff0c;浅粉色风格&#xff0c;千年美学&#xff0c;柔和的雾气&#xff0c;转瞬即逝&#xff0c;山寨核&#xff0c;迷人&#xff0c;不加修饰 比例9:16&#xff0c;模型V6&#xff0c;风格默认 StartAI提示词翻译&am…

客户点赞,“信”任满满 | 竹云喜获近百封感谢信!

玉兔辞旧岁&#xff0c;威龙迎新春 在新春佳节来临之际 一封封感谢信、表扬信 纷至沓来 纸短情长 每一封感谢信的背后 都记载着一个动人的故事 字里行间情真意切 激励着竹云继续前行&#xff01; 国家电投 竹云项目组成员凭借丰富的业务、技术经验、专业的职业素养和较…

redhat8.6配置本地yum源

第一步先挂载本地镜像 df -h 查看是否有镜像&#xff0c;没有默认在/dev/dr0 以下为没有挂载图片2. 挂载本地镜像 mkdir /mnt/rd8 mount /dev/sr0 /mnt/rd8/ 挂载完毕再df -h 看一眼。已经存在/dev/sr03. 填写文件 [rootlinux-server ~]# cd /etc/yum.repos.d/ [rootlinux…

MySQL数据库基础合集

MySQL数据库基础合集 目录 MySQL数据库基础合集SQL关键字DDL关键字DML关键字DQL关键字DCL关键字约束关键字 SQL基础数据类型整数类型字符类型浮点类型时间类型 数据定义语言DDL1.查看数据库2.创建库3.删除库4.切换库5.创建表6.删除表7.查看表8.查看表属性9.插入列10.修改列11.设…

设计模式——模板方法模式(Template Method Pattern)

概述 模板方法模式&#xff1a;定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术&#xff0c;它是一种类行为型模式。模板方法模式是结…

氢气传感器报警值:守护实验室安全的隐形卫士

随着科技的发展&#xff0c;我们的生活变得越来越便捷&#xff0c;但是与此同时&#xff0c;安全问题也日益凸显。其中&#xff0c;氢气作为一种清洁能源&#xff0c;被广泛应用于各个领域&#xff0c;但是如果不加以控制&#xff0c;氢气泄漏也可能带来严重的安全隐患。因此&a…

成都源聚达:抖音开店卖什么最好

在数字化浪潮的推动下&#xff0c;抖音已成为一个集娱乐与商业于一体的平台&#xff0c;吸引着无数商家和创作者。但在这个竞争激烈的市场中&#xff0c;选择什么样的产品才能在抖音上脱颖而出呢? 自然是那些符合抖音用户喜好的产品。据统计&#xff0c;服饰、美妆、食品、家居…

[k8s系列]:kubernetes·概念入门

文章目录 序言1 kubernetes概述1.1 kubernetes解决的问题1.1.1 部署方式的演变1.1.2 容器化部署——容器编排问题 1.2 kubernetes组件1.2.1 kubernetes组件调用关系1.2.2 调用逻辑示例 序言 序言&#xff1a;本文将从&#xff0c;第一节&#xff1a;kubernetes解决的问题、组件…

Linux实验记录:使用iptables

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 防火墙作为公网与内网的屏障&#…

2023年黄金市场行业分析(电商数据查询软件):年销售额激增104%,黄金消费持续走热

近日&#xff0c;社交平台上不少年轻人将实物金条在黄金加工店加工成黄金首饰的帖子爆火&#xff0c;不少人也在评论区表示要跟随。可以看到&#xff0c;黄金的热潮还在持续。 根据世界黄金协会《2022年中国金饰市场趋势洞察》报告显示&#xff0c;黄金市场被认为是销售大头的…

Flask 入门1:一个简单的 Web 程序

1. 关于 Flask Flask诞生于2010年&#xff0c; Armin Ronacher的一个愚人节玩笑。不过现在已经是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架&#xff0c;它主要面向需求简单&#xff0c;项目周期短的小应用。 Flask本身相当于一个内核&#xff0c;其他几乎所…

idea报错:Cannot resolve symbol ‘springframework‘

说明maven没有配置好或者加载好 解决&#xff1a; 1&#xff09;File–>Invalidate Caches… 清理缓存&#xff0c;重启idea客户端 然后我这里只进行了第一步就不报错了&#xff01;&#xff01;&#xff01; 如果你依然报错&#xff0c;就继续第二步&#xff1a; 2&…

实战教程:如何用Spring Boot和MySQL存储共享单车数据

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

数字孪生项目开发的注意事项

数字孪生是指使用数字化技术创建物理实体的数字副本&#xff0c;通常用于模拟、监测和优化实际系统的运行。数字孪生项目的开发涉及多个方面&#xff0c;以下是一些注意事项&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#…

Node.js-express

1.了解Ajax 1.1 什么是ajax Ajax的全称是Asynchronous Javascript And XML&#xff08;异步Js和XML&#xff09;. 通俗的理解&#xff1a;在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式&#xff0c;就是Ajax 1.2 为什么要学习Ajax 之前所学的技术&#xff0c…

想查大数据信用报告,这几点高性价比查询平台的特点要了解!内附查询平台推荐

随着大数据技术的不断发展&#xff0c;大数据信用报告成为不少人全方位了解自身个人信用的重要工具。在众多大数据信用报告查询平台中&#xff0c;选择高性价比的查询平台是很多人都想了解的&#xff0c;本文就为大家介绍大数据信用报告查询高性价比平台的特点&#xff0c;希望…

如何在群晖NAS部署office服务实现多人远程协同办公编辑文档

文章目录 本教程解决的问题是&#xff1a;1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是&#xff1a; 1.Word&#xff0c;PPT&#xff0c;Excel等重要文件存在本地环境&#xff0c;如何在编…

阿里云幻兽帕鲁服务器4核16G配置报价

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…