Python序列Day3

序列

序列是一种数据存储方式,用方括号标注,逗号分隔的一组值。在内存中,序列就是一块用来存放多个值的连续的内存空间。

常见序列结构有:字符串、列表、元组、字典、集合

列表

用于存储任意数目,任意类型的数据集合

[]创建

a = [10,20,'www','ggg']
a = []     #创建一个空的列表对象

list()创建

使用list()可以将任意可迭代的数据转化为列表。

a = list()  #创建一个空的列表对象
a  = list(range(10))   #range返回的是一个range对象,而不是列表
a
[0,1,2,3,4,5,6,7,8,10]a = list("wwwwww")
a
['w','w','w','w','w','w']

推导式生成列表

a = [x*2 for x in range(5)]
a
[0,2,4,6,8]

切片操作会返回新的对象

rgba = ["Red", "Green", "Blue","Alph"]
correct_rgba = rgba[:]
correct_rgba[-1] = "Alpha"
correct_rgba
["Red", "Green", "Blue", "Alpha"]
rgba
["Red", "Green", "Blue", "Alph"]

append()

原地修改列表对象,在列表尾部添加新的元素。不创建新的列表对象。

a = [10,20]
a.append(30)
a
[10,20,30]

+运算符

并不是真正在尾部添加元素,而是创建新的列表对象,将原列表的元素和新列表的元素依次复制到新的列表对象中。这样会设计大量的复制操作,对于操作大量元素不建议使用。创建了新的列表对象。

extend()

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

a = [20,40]
a.extend([60,80])
a
[20,40,60,80]

insert()

将指定元素插入到列表对象的任意指定位置。这样会让插入位置后的所有元素移动。

乘法扩展

a = ['www',666]
b = a*3
a
['www',666,'www',666,'www',666]

del

删除列表指定位置的元素

a = [1,2,3,40]
del a[1]
a
[1,3,40]

pop()

删除并返回指定位置的元素,如果未指定位置则默认操作列表最后一个元素。

a = [10,20,30,40,50]
a.pop()
50
a
[10,20,30,40]

remove()

删除首次出现的指定元素,若不存在该元素,抛出 ValueError 异常。

clear()

移除列表中的所有项。 类似于 del a[:]。

copy()

返回列表的浅拷贝。 类似于 a[:]。

列表也可以用作队列,然而,列表作为队列的效率很低。因为,在列表末尾添加和删除元素非常快,但在列表开头插入或移除元素却很慢(因为所有其他元素都必须移动一位)。

实现队列最好用 collections.deque,可以快速从两端添加或删除元素。

from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")           # Terry 到了
queue.append("Graham")          # Graham 到了
queue.popleft()                 # 第一个到的现在走了
'Eric'
queue.popleft()                 # 第二个到的现在走了
'John'
queue                           # 按到达顺序排列的剩余队列
deque(['Michael', 'Terry', 'Graham'])

元组tuple

元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。

()创建,小括号可以省略

a = (1,2,3)   # 或a = 1,2,3

**如果元组只有一个元素,则必须后面加逗号。**解释器会把(1)解释为整数1,(1,)才被解释为元组。

# 元组可以嵌套:
t = (5,4,3,2,1)
u = t, (1, 2, 3, 4, 5)
u
((5,4,3,2,1), (1, 2, 3, 4, 5))# 但它们可以包含可变对象:
v = ([1, 2, 3], [3, 2, 1])
v
([1, 2, 3], [3, 2, 1])

zip

zip(列表1,列表2,…)将多个列表对应位置的元素组合成为元组,并返回这个zip对象。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
d = zip(a,b,c)
list(d)
[(1,2,3),(4,5,6),(7,8,9)]

特点

  • 不可变序列
  • 元组的访问和处理速度比列表快
  • 整数、字符串和元组可以作为字典的键,列表可变不能作为字典的键使用。

字典

字典是键值对的无序可变序列,字典中的每个元素都是一个“键值对”。字典是以 键 来索引的,键可以是任何不可变类型;字符串和数字总是可以作为键。 元组在其仅包含字符串、数字或元组时也可以作为键;如果一个元组直接或间接地包含了任何可变对象,则不可以用作键。字典的键必须是唯一的。

{},dict()创建字典对象

花括号 {} 用于创建空字典。

a = {'name':'www','age':18,'job':'student'}   #花括号
b = dict(name='www',age=18,job='student')	
c = dict([('name','www'),('age',18),('job','student')])  #键值对序列
d = {}
e = dict()

zip()

k = ['name','age','job']
v = ['www',18,'student']
d = dict(zip(k,v))
d
{'name':'www','age':18,'job':'student'}

字典元素的访问

  • 通过键访问值
a['name']
'www'
  • 通过get()获取值
a.get('name')
'www'
  • 通过items()列出所有键值对
  • 通过keys()列出所有键
  • 通过values()列出所有值

字典核心底层原理

集合

集合是无序可变,元素不能重复。底层是字典实现,集合的所有元素都是字典的键对象,因此是不能重复的且唯一的。

使用{}创建集合对象

创建空集合只能用set(),不能用{},{}创建的是空字典。

a = {3,5,7}
a
{3,5,7}
a.add(9)
a
{9,3,5,7}

使用set(),将列表、元组等可迭代对象转成结合。

a = ['a','b','c','b']
b = set(a)
b
{'a','b'},'c'

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

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

相关文章

私服与外挂:刑事法律风险的深度剖析

首席数据官高鹏律师团队编著 在当今数字化时代,网络游戏产业蓬勃发展,然而与之相伴的私服与外挂现象却屡禁不止,且其背后隐藏着严重的刑事法律风险。作为一名律师,有必要在此对私服与外挂相关的刑事问题进行深入解读,以…

Linux云计算训练营笔记day04(Rocky Linux中的命令)

mv 移动(剪切) 源数据会消失 格式: mv 源文件 目标路径 touch /opt/a.txt 创建文件 mv /opt/a.txt /root 移动文件,没有改名 mkdir gongli 创建目录 mv gongli /opt/ 移动目录,没有改名 mv /opt/gongli tedu 移动目录,改名了 …

蓝桥杯青少 图形化编程——“星星”点灯

蓝桥杯青少 图形化编程——“星星”点灯 编程实现: 有10盏灯,从1到10按顺序依次编号,初始时全部灯处于开启状态。有10个人也从1到10依次编号。第一个人(1号)将灯全部关闭,第二个人(2号&#x…

conda配置好的pytorch在jupyter中如何配置

配置 其实不用再配置了 如下图(主要是激活pytorch环境,再jupyter notebook) jupyter运行快捷键shiftenter 新建文件夹folder,新建notebook 使用 帮助文档(两种方式) ctrl/ 注释

COLT_CMDB_aix_diskinfo.sh

#!/bin/ksh #IT_BEGIN #IT_TYPE3 #IT SYSTEM_AIX_AGENTDISKDISCOVER|discovery.diskInfo[disc] #原型指标 #IT_RULE SYSTEM_AIX_IP|ipAddress[{#DISKNAME}] #IT_RULE SYSTEM_AIX_AGENTDISKPATH|diskPath[{#DISKNAME}] #IT_RULE SYSTEM_AIX_DISKNAME|diskName[{#DISKNAME}] #IT_…

IBM BAW(原BPM升级版)使用教程第五讲

结前篇! 一、服务:外部服务 在 IBM Business Automation Workflow (BAW) 中,外部服务(External Services)是指在流程中调用和集成外部系统或服务的组件。外部服务允许IBM BAW与其他业务系统、应用程序或第三方服务进行…

如何用更少的显存训练 PyTorch 模型

文章目录 1、引言 2、自动混合精度训练 3、低精度训练 4、梯度检查点 5、通过梯度累积减小批量大小 6、张量分片与分布式训练 7、高效数据加载 8、使用 In-Place 操作 9、Activation and Parameter Offloading 10、使用更精简的优化器 11、高级策略 12、总结 1、引言 在训练大…

极速轻量,Rust 网络开发新选择:Hyperlane 框架深度解析

极速轻量,Rust 网络开发新选择:Hyperlane 框架深度解析 在高性能网络服务开发领域,Rust 凭借其内存安全与高效并发的特性备受青睐。今天,我们迎来一款专为现代 Web 服务打造的明星框架——Hyperlane,它以“轻量高效、…

单片机裸机环境下临界区保护

目录 1、直接中断屏蔽法 2、嵌套计数优化法 3、BASEPRI寄存器应用 4、动态优先级调整策略 5、LDREX/STREX指令应用 6、位带别名区原子访问 7、上下文感知保护 8、中断延迟优化技术 在嵌入式系统开发中,临界区保护是确保系统可靠性的关键技术。本文以ARM Cor…

【deepseek教学应用】001:deepseek如何撰写教案并自动实现word排版

本文讲述利用deepseek如何撰写教案并自动实现word高效完美排版。 文章目录 一、访问deepseek官网二、输入教案关键词三、格式转换四、word进一步排版 一、访问deepseek官网 官网:https://www.deepseek.com/ 进入主页后,点击【开始对话】,如…

springboot使用mybatisPlus进行数据库增删改查

springboot使用mybatisPlus进行数据库增删改查 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个…

基于SpringBoot的校园周边美食探索及分享平台的设计与实现

资源详情: 私信我或点击链接获取: 基于SpringBoot的校园周边美食探索及分享平台的设计与实现资源-CSDN文库 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联…

到达最后一个房间的最少时间II 类似棋盘转移规律查找

文章目录 3342.到达最后一个房间的最少时间II 思路分析:最短路径问题,当然,由于不同的格子之间的移动的代价不统一,所以这个最短路径需要使用Dijkstra算法进行求解,对于直接使用Dijkstra算法模版的题目,大家可以先去做…

基于开源AI大模型AI智能名片S2B2C商城小程序源码的私域流量稳定性构建研究

摘要:在私域流量时代,传统实体零售的"时间积累"逻辑被直播电商等新业态颠覆。完美日记等新锐品牌通过构建私域流量池,实现了从0到1的指数级增长,而传统品牌却陷入"流量焦虑"。本文提出以开源AI大模型AI智能名…

做 iOS 调试时,我尝试了 5 款抓包工具

日常做开发的人,特别是和客户端接口打交道的同学,应该对“抓包”这件事不陌生。 调试登录流程、分析接口格式、排查错误返回、分析网络性能、甚至研究第三方 App 的数据通信……说到底,都绕不开“抓 HTTPS 包”这一步。 而这一步&#xff0…

Algolia - Docsearch的申请配置安装【以踩坑解决版】

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

nginx 配置后端健康检查模块

nginx自带的针对后端节点健康检查的功能比较简单,通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的参数来完成,当后端节点出现故障时,自动切换到健康节点来提供访问。但是nginx不能事先知道后端节点状态是否健康,后端即使有不健康节点,负载均…

平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE

数字小键盘封装 数组小键盘封装是指将与数组小键盘相关的功能、操作、数据等进行整合,形成一个独立的、可复用的模块。封装数组小键盘具有以下几方面重要意义: 提高代码可维护性 降低复杂度:数组小键盘在实际应用中,可能涉及到…

网工实验——OSPF配置

网络拓扑图 配置 1.为每个路由器配置接口(略)(详细见RIP实验) 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精确配置网络,也可以像下面那条命令那样配置 …

Kubernetes client-go 客户端类型与初始化指南

Kubernetes client-go 客户端类型与初始化指南 在 Kubernetes 的 client-go 库中,存在多种客户端用于与 API 服务器交互。以下介绍主要客户端类型,包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底层 REST 客户端,直接…