IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Python 列表与字典详解 -> 正文阅读

[开发工具]Python 列表与字典详解

内容取自《python学习手册第5版》,小白的自学笔记和理解,错误请大佬斧正。

列表和字典都可以在原位置进行修改,也可以按需求增长或缩短,而且可以包含任何种类的对象或被嵌套。

A - 列表

列表是Python中最具灵活性的序列对象类型,可以包含任何种类的对象,是可变对象。

列表支持原位置修改的操作,可以通过制定的偏移量和分片,列表方法调用。删除语句等方法实现。

TIP:拼接,切片操作返回的是新列表。删除和索引赋值操作,会在原位置修改列表。

在标准解释器内部,列表是C数据而不是链接结构。

B - 列表的操作方法

列表的拼接用法(+)(生成新对象)

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]

列表的重复用法(*)(生成新对象)

>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

列表推导式

res = []
for c in 'SPAM':
    res.append(c*4)

#改写为列表推导式
res = [c*4 for c in 'SPAM']

列表嵌套及索引

>>> l=[[1,2,3],[4,5,6],[7,8,9]]
>>> l
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> l[0][2]
3

?利用索引修改列表(不会产生新的对象),在索引位置赋值一个空列表则会在指定位置存储一个空列表。

>>> l[1]=[10,11,12]
>>> l
[[1, 2, 3], [10, 11, 12], [7, 8, 9]]

利用切片修改列表(不会产生新的对象),分片赋值底层逻辑有两个动作,删除表达式指定的分片,在删除的位置插入等号右边的表达式要赋的值。利用这个逻辑还可以用来替换(覆盖),增长(插入),缩短(删除)操作。

>>> l[0][1:3] = [8,9]
>>> l
[[1, 8, 9], [10, 11, 12], [7, 8, 9]]

extend方法扩展尾部

>>> list = [1,2,3]
>>> list
[1, 2, 3]
>>> list.extend([4,5])
>>> list
[1, 2, 3, 4, 5]

append方法尾部加元素

>>> list.append(0)
>>> list
[1, 2, 3, 4, 5, 0]

extend方法循环访问传入的可迭代对象,并逐个把产生的元素添加到列表尾部。append会直接把对象添加到尾部而不会遍历它。

在某些类型的运用中,往往会将pop方法和append方法联用,以实现后进先出栈结构。列表的末端作为栈的顶端。?

pop方法删除

>>> l = []
>>> l.append(1)
>>> l.append(2)
>>> l
[1, 2]
>>> l.pop()
2
>>> 

sort方法排序

>>> list.sort()
>>> list
[0, 1, 2, 3, 4, 5]

sort方法可以通过传入关键词参数对sort的行为进行修改。

关键词参数是函数调用中一种特殊的“名称 = 值(name = value)”语法,由名字来指定传递机制,通常用于给定配置选项。

>>> l = ['abc','ABD','aBe']
>>> l.sort()
>>> l
['ABD', 'aBe', 'abc']
>>> l.sort(key=str.lower)
>>> l
['abc', 'ABD', 'aBe']

reverse方法反转排序

>>> l.reverse()
>>> l
['aBe', 'ABD', 'abc']

?index方法按照值查找偏移量(不会改变列表自身)

>>> l = [a,b,c]
>>> l.index(b)
1

insert方法在偏移处插入值

>>> l = ['a','b','c']
>>> l
['a', 'b', 'c']
>>> l.insert(1,'d')
>>> l
['a', 'd', 'b', 'c']

remove方法通过值删除元素

>>> l.remove('b')
>>> l
['a', 'd', 'c']

count计算某元素的出现次数(不会改变列表自身)

>>> l = [1,1,5,1,8,7,9,1,1,3]
>>> l.count(1)
5

del方法在原位置删除某项或某段

>>> del l[0]
>>> l
[1, 5, 1, 8, 7, 9, 1, 1, 3]
>>> del l[1:3]
>>> l
[1, 8, 7, 9, 1, 1, 3]

?

C - 字典?

除列表外,字典是python中最灵活的内置数据结构类型。

如果把列表看做有序的对象集合,那么就可以吧字典当做无序的集合。

字典当中的元素是通过键来存取的,而不是通过偏移存取的。

Python列表能扮演其他语言中数组的角色,字典则能扮演记录、搜索表、以及任何其他元素的键比索引重要的数据结构。

Python中字典主要有以下属性:

1)通过键来读取数据

字典有时又叫关联数组(associative array)或散列表(hash)。他们通过键将一系列值联系起来,这样你就可以使用键才能够字典中取出初始存储于该键下的一项。

2)任意对象的无序集合

保存在字典中的项并没有特定的顺序。键提供了字典中项的象征性(非物理)位置。

3)长度可变、异构、任意嵌套

字典可以在原位置增长或缩短。可以包含任何类型的对象,支持任意深度的嵌套。

4)属于“可变映射”类型

通过给索引复制,字典可以在原位置修改,但不支持字符串和列表中的序列操作。因为字典是无序集合。字典是唯一内置的,核心的映射类型。

5)对象引用表(散列表hash)

字典是作为散列表(支持快速检索的数据结构)来实现的,一开始很小,并根据要求而增长。字典存储的是对象引用。

E - 字典的操作方法

创建一个字典

>>> D = {'spam':2,'ham':1,'eggs':3}
>>> D
{'spam': 2, 'ham': 1, 'eggs': 3}

通过一个键来读取值

>>> D['spam']
2

通过len()函数返回键的数量

>>> len(D)
3

通过in成员关系运算符判断字典中有没有该键

>>> 'ham' in D
True

通过列表和keys方法获取全部键

>>> list(D.keys())
['spam', 'ham', 'eggs']

通过赋值对字典进行嵌套

>>> D['ham'] = ['grill','bake','fry']
>>> D
{'spam': 2, 'ham': ['grill', 'bake', 'fry'], 'eggs': 3}

通过del对字典进行删除键值对

>>> del D['eggs']
>>> D
{'spam': 2, 'ham': ['grill', 'bake', 'fry']}

通过列表和values方法获取全部值

>>> D = {'spam':2,'ham':1,'eggs':3}
>>> list(D.values())
[2, 1, 3]

通过列表和items方法获取全部键值对

>>> list(D.items())
[('spam', 2), ('ham', 1), ('eggs', 3)]

通过get获取键对应的值,如果键不存在则返回None或其他用户定义的值

>>> D.get('spam')
2
>>> print(D.get('toast'))
None

通过update方法拼接其他字典,当键冲突时会盲目地覆盖相同键的值

>>> D
{'spam': 2, 'ham': 1, 'eggs': 3}
>>> D2 = {'toast':4,'muffin':5}
>>> D.update(D2)
>>> D
{'spam': 2, 'ham': 1, 'eggs': 3, 'toast': 4, 'muffin': 5}

pop方法可以从字典中删除一个键并返回它的值

>>> D
{'spam': 2, 'ham': 1, 'eggs': 3, 'toast': 4, 'muffin': 5}
>>> D.pop('muffin')
5
>>> D
{'spam': 2, 'ham': 1, 'eggs': 3, 'toast': 4}

在字典中,每个键只有一个值,但是一个值可以有多个键与之对应。

使用字典时要注意:

1)序列运算无效

2)对新索引赋值会添加项

3)键不一定总是字符串

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:21:26  更:2021-09-06 11:23:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 0:32:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计