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 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Py05 列表特定操作 Python推导语法 嵌套 -> 正文阅读

[开发工具]Py05 列表特定操作 Python推导语法 嵌套

F1 列表的特定类型操作

1.Python的列表与其他语言的数组类似但是强大的多,因为列表没有固定类型的约束。

2.列表没有固定大小,我们可以按需要进行增加或减小列表大小。

>>>L=[1,'ab',1.23]
>>>L.append('qx')
>>>L
[1, 'ab', 1.23, 'qx']
>>>L.pop(0)
1
>>>L
['ab', 1.23, 'qx']
>>>L.pop(-1)
'qx'
>>>L
['ab', 1.23]

上例列表类型有3种 特定类型操作都是对象后面加点调用 .append(),.pop(这里是偏移量)

3.其他列表方法 insert remove extend

4.因为列表可变,大多数列表方法都会原位置改变列表对象,而不是创建一个新的列表 与字符 数字不同

>>>M=['b','c','a']
>>>M.sort()
>>>M
['a', 'b', 'c']
>>>M.reverse()
>>>M
['c', 'b', 'a']

都是在原位置进行了改变,直接改变了原列表

S2 边界检查

1.尽管列表没有固定大小,Python仍不允许引用不存在的元素 ,超出列表末尾之外的索引会返回错误,对列表末尾范围之外的赋值也会返回错误

>>>M=[1,2,3]
>>>M[5]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list index out of range
>>>M[5]=1
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list assignment index out of range

?2.在Python中并不是默默的增大列表作为响应而是会提示错误,为了让一个列表增大,可以调用append这个列表特定方法

T3? 嵌套

1.Python核心数据类型的一个优秀特性是支持任意嵌套,能够以任意组合对进行嵌套,还可以多个层次进行嵌套? 例如能够让一个列表包含一个字典 让这个字典包含另一个列表

2.

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>M
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>>M[0][0]
1
>>>M[1][2]
4

列表嵌套实现矩阵赋值

F4 推导? 高级操作 列表推到表达式

1.例如上矩阵例提取某一行是简单的,但是提取某一列需要借助循环,但是通过列表推导表达式可以方便的直接提取

>>>M
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>>A=[row[0] for row in M]
>>>A
[1, 2, 3]
>>>A=[row[1] for row in M]
>>>A
[2, 3, 4]

看懂的方式是从后往前看 inM: M中? ? for row:?每一行? ?row[1] 的第二个元素

2.列表推导源自数学中集合的概念,本质是通过对? ?序列(不止限于列表)? 中的每一项运行一个表达式来创建一个新列表的方法,每次一个,从左至右

3.列表推导是编写在方括号中的(提醒你在创建一个新列表方法)

4.列表推导使用同一个变量名的表达式和循环结构组成

更复杂的操作? 提取对角线元素

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>M
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>>diag=[M[x][x] for x in [0,1,2]]
>>>diag
[1, 3, 5]

?只提取第一列中偶数元素

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>B=[row[0] for row in M if row[0]%2==0]
>>>B
[2]

?第一列值加1

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>B=[row[0]+1 for row in M]
>>>B
[2, 3, 4]

?列表推导表达式针对非列表如字符串(序列都可以) 但返回根据你是用的是方括号 还是花括号 还是括号

>>>Q=[2*c for c in 'love']
>>>Q
['ll', 'oo', 'vv', 'ee']

?5. 内置函数range() 配合list()生成列表

>>>list(range(-8,6,2))
[-8, -6, -4, -2, 0, 2, 4]

?前面(-8,6)表示的集合实际上是左闭右开的? 幅度为2 最后一个参数

>>>[[x**2,x**3] for x in range(4)]
[[0, 0], [1, 1], [4, 8], [9, 27]]
>>>[x**2 for x in list(range(4))]
[0, 1, 4, 9]
>>>[x**2 for x in range(4) if (x**2)%2==0]
[0, 4]

range()函数在列表推到表达式中不需要加list()

6.列表推到是一个可选的特性

7.列表推导? 更一般的用法 不仅仅是生成列表,括号中的推到语法可以用来创建产生所需结果的生成器

?

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>G=(sum(row) for row in M)
>>>next(G)
6
>>>next(G)
9
>>>next(G)
12

?8. 内置map(a,b)? a 是一个函数? 作用到b的每一个对象上

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>list(map(sum,M))
[6, 9, 12]

?9.推导语法也可以用来创建集合和字典

>>>M=[[1,2,3],[2,3,4],[3,4,5]]
>>>{sum(row) for row in M}
{9, 12, 6}
>>>{i:sum(M[i]) for i in range(3)}
{0: 6, 1: 9, 2: 12}

10.实际上,列表 集合 字典 生成器? 都可以用 推导语法来创建?

>>>[ord(x) for x in 'love']
[108, 111, 118, 101]
>>>[ord(x) for x in 'I love you']
[73, 32, 108, 111, 118, 101, 32, 121, 111, 117]
>>>{ord(x) for x in 'I love you'}
{32, 101, 73, 108, 111, 117, 118, 121}
>>>{x:ord(x) for x in 'I love you' }
{'I': 73, ' ': 32, 'l': 108, 'o': 111, 'v': 118, 'e': 101, 'y': 121, 'u': 117}
>>>(ord(x) for x in 'love' )
<generator object <genexpr> at 0x000001C1D60FA820>

内置函数ord()返回对应字符的ASCII码

注意 集合 与 字典 没有左右相对顺序 且 会将相同元素只保留一个 其他 都去掉?

?

?

?

?

  开发工具 最新文章
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常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:24:57  更:2022-06-01 15:25:36 
 
开发: 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年11日历 -2024/11/14 14:52:20-

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