当前位置: 首页 > news >正文

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.xdnf.cn/news/348571.html

相关文章:

  • 【软件设计师:操作系统】5.操作系统基础与进程
  • FPGA图像处理(四)------ 图像裁剪
  • 5月8号.
  • MySQL事务隔离机制与并发控制策略
  • 电子电路原理第十五章(运算放大器)
  • 新手SEO基础优化步骤
  • conda创建一个新环境,指定环境的存储位置,而不是默认值地址
  • 操作系统 : Linux进程信号
  • 【LeetCode 热题 100】二叉树 系列
  • 基于GlusterFS的分布式存储集群部署实战指
  • 硕博士学位论文题目需要注意的几个问题
  • [计算机科学#11]:编程语言简史,从二进制到简约表达的华丽转身,造就原因——“懒”
  • 实现类似AI流式输出效果
  • 美化cmd窗格----添加背景图
  • axes.axis()--控制坐标轴显示
  • 深入理解指针(1)
  • 3.5/Q1,GBD数据库最新文章解读
  • 深入解析:如何正确处理业务空值与技术异常?从避免滥用`None`和`WebDriverException`谈起
  • CTF-DAY10
  • 设计部绩效考核关键指标与综合评估方法
  • 【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
  • Vue3快速入门/Vue3基础速通
  • GIT设置账户密码特殊字符处理
  • 第三天 车联网云架构
  • 18.Java 序列化与反序列化
  • Puppeteer vs Playwright:全面对比与最佳应用场景指南
  • GIS开发技术介绍
  • Filecoin中lotus节点的搭建部署
  • 【Axure高保真原型】中继器表格批量上传数据
  • 如何解决 Linux 系统文件描述符耗尽的问题