python3 入门 (二) 列表的使用
时间:2022-05-08
本文章向大家介绍python3 入门 (二) 列表的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
列表用于组织其它数值,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是相同的类型。
列表的定义
1 student = ['Tom', 'Jack', 'Avril']
添加元素
- 将另一个列表直接赋值给该列表
- 使用"[头下标:尾下标]"j将另一个列表的指定元素值拷贝至该列表
- 使用"+"连接符,将元素添加至列表末尾
- 使用" * "乘号得到多个相同元素
- 使用append方法,将元素添加至列表末尾
- 使用extend方法,将元素添加至列表末尾
- 使用insert方法,将元素插入至指定位置
1 student = ['Tom', 'Jack', 'Avril']
2 student *= 3
3 print(student) #['Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril']
4
5
6 # student中变量为name值的复制
7 name = ['Jerry', 'Lucy']
8 student = name[:]
9 print(student) # ['Jerry', 'Lucy']
10 name.clear()
11 print(student) # ['Jerry', 'Lucy']
12
13
14 # *得到的每一相同项指向同一内存地址
15 name = ['Jerry']*3
16 print(name) # ['Jerry', 'Jerry', 'Jerry']
17 print(id(name[0])) # 54580088
18 print(id(name[1])) # 54580088
19 print(id(name[2])) # 54580088
20
21
22 # name2与name1指向同一内存地址
23 name1 = ['Jerry']
24 name2 = name1
25 print(name2) # ['Jerry']
26 name1.clear()
27 print(name2) # []
28
29 # student中变量为name值的复制,与name不指向同一内存地址
30 name = ['Jerry']
31 student = name*3
32 print(student) # ['Jerry', 'Jerry', 'Jerry']
33 name.clear()
34 print(student) # ['Jerry', 'Jerry', 'Jerry']
35
36
37 # append添加后,student中的['Jerry']与name变量指向同一内存地址
38 student = ['Tom', 'Jack', 'Avril']
39 name = ['Jerry']
40 student.append(name)
41 print(student) # ['Tom', 'Jack', 'Avril', ['Jerry']]
42 name.clear()
43 print(student) # ['Tom', 'Jack', 'Avril', []]
44
45
46 # 与name变量不指向同一内存地址
47 student = ['Tom', 'Jack', 'Avril']
48 name = 'Jerry'
49 student.append(name)
50 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
51 del name
52 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
53
54
55 # 同上,insert插入后,student中的['Jerry']与name变量指向同一内存地址
56 student = ['Tom', 'Jack', 'Avril']
57 name = ['Jerry']
58 student.insert(1, name)
59 print(student) # ['Tom', ['Jerry'], 'Jack', 'Avril']
60 name.clear()
61 print(student) # ['Tom', [], 'Jack', 'Avril']
62
63
64 # 与name变量不指向同一内存地址
65 student = ['Tom', 'Jack', 'Avril']
66 name = 'Jerry'
67 student.insert(1, name)
68 print(student) # ['Tom', 'Jerry', 'Jack', 'Avril']
69 del name
70 print(student) # ['Tom', 'Jerry', 'Jack', 'Avril']
71
72
73 # extend添加后,student中的['Jerry']为name值的复制
74 student = ['Tom', 'Jack', 'Avril']
75 name = ['Jerry']
76 student.extend(name)
77 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
78 name.clear()
79 print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
80
81
82 student = ['Tom', 'Jack', 'Avril']
83 name = 'Jerry'
84 student.extend(name)
85 print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
86 del name
87 print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
删除元素
- 使用remove方法删除指定值的元素
- 使用pop方法弹出栈顶元素,返回弹出元素
- 使用del关键字删除指定位置元素
- 使用clear方法清空列表元素,等于del a[:]
1 # 删除指定值的元素
2 student = ['Tom', 'Jack', 'Avril']
3 student.remove('Tom')
4 print(student)
5
6 # 弹出栈顶元素
7 student = ['Tom', 'Jack', 'Avril']
8 s = student.pop()
9 print(s)
10 print(student)
11
12 # 删除指定位置元素
13 student = ['Tom', 'Jack', 'Avril']
14 del student[1]
15 print(student)
其他操作:
list.index(x) |
返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误 |
---|---|
list.count(x) |
返回 x 在列表中出现的次数 |
list.sort() |
对列表中的元素进行排序。参数reverse默认为False,从小到大排序,设置为True则为从大到小排序 |
list.reverse() |
倒排列表中的元素 |
list.copy() |
返回列表的浅复制(变量值的复制),等于list[:] |
列表推导式
列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。
将列表中每个数值乘三,获得一个新的列表:
>>> num = [1, 2, 3]
>>> [3*n for n in num]
[3, 6, 9]
可以用 if 子句作为过滤器:
>>> num = [1, 2, 3]
>>> [3*n for n in num if n > 2]
[9]
>>> [3*n for n in numif n < 3]
[3,6]
其他用法:
>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]
用列表推导式实现矩阵转置:
1 # 矩阵转置
2 matrix = [
3 [1, 2, 3],
4 [4, 5, 6],
5 [7, 8, 9],
6 [10, 11, 12]
7 ]
8
9 # 方法一
10 newMatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
11 print(newMatrix)
12
13 # 方法二
14 newMatrix = []
15 for i in range(len(matrix[0])):
16 newMatrix.append([row[i] for row in matrix])
17 print(newMatrix)
18
19 # 方法三
20 newMatrix = []
21 for i in range(len(matrix[0])):
22 newRow = []
23 for oldRow in matrix:
24 newRow.append(oldRow[i])
25 newMatrix.append(newRow)
26 print(newMatrix)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu下Docker CE的安装
- 基于Android自定义控件实现雷达效果
- Android 中 onSaveInstanceState()使用方法详解
- Linux修改主机名的简单方法
- Android RecycleView使用(CheckBox全选、反选、单选)
- Android自定义滑动解锁控件使用详解
- linux nc命令小结
- Android如何自定义EditText光标与下划线颜色详解
- 基于Centos7 部署Varnish缓存代理服务器
- Android getActivity()为空的问题解决办法
- Android Notification使用方法总结
- Linux下redis的持久化、主从同步与哨兵详解
- 详解Android(共享元素)转场动画开发实践
- Android自定义View中attrs.xml的实例详解
- Android开发之缓冲dialog对话框创建、使用与封装操作