python3 入门 (二) 列表的使用
列表用于组织其它数值,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是相同的类型。
列表的定义
student = ['Tom', 'Jack', 'Avril']
添加元素
- 将另一个列表直接赋值给该列表
- 使用"[头下标:尾下标]"j将另一个列表的指定元素值拷贝至该列表
- 使用"+"连接符,将元素添加至列表末尾
- 使用" * "乘号得到多个相同元素
- 使用append方法,将元素添加至列表末尾
- 使用extend方法,将元素添加至列表末尾
- 使用insert方法,将元素插入至指定位置
student = ['Tom', 'Jack', 'Avril']
student *= 3
print(student) #['Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril'] # student中变量为name值的复制
name = ['Jerry', 'Lucy']
student = name[:]
print(student) # ['Jerry', 'Lucy']
name.clear()
print(student) # ['Jerry', 'Lucy'] # *得到的每一相同项指向同一内存地址
name = ['Jerry']*3
print(name) # ['Jerry', 'Jerry', 'Jerry']
print(id(name[0])) #
print(id(name[1])) #
print(id(name[2])) # # name2与name1指向同一内存地址
name1 = ['Jerry']
name2 = name1
print(name2) # ['Jerry']
name1.clear()
print(name2) # [] # student中变量为name值的复制,与name不指向同一内存地址
name = ['Jerry']
student = name*3
print(student) # ['Jerry', 'Jerry', 'Jerry']
name.clear()
print(student) # ['Jerry', 'Jerry', 'Jerry'] # append添加后,student中的['Jerry']与name变量指向同一内存地址
student = ['Tom', 'Jack', 'Avril']
name = ['Jerry']
student.append(name)
print(student) # ['Tom', 'Jack', 'Avril', ['Jerry']]
name.clear()
print(student) # ['Tom', 'Jack', 'Avril', []] # 与name变量不指向同一内存地址
student = ['Tom', 'Jack', 'Avril']
name = 'Jerry'
student.append(name)
print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
del name
print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] # 同上,insert插入后,student中的['Jerry']与name变量指向同一内存地址
student = ['Tom', 'Jack', 'Avril']
name = ['Jerry']
student.insert(1, name)
print(student) # ['Tom', ['Jerry'], 'Jack', 'Avril']
name.clear()
print(student) # ['Tom', [], 'Jack', 'Avril'] # 与name变量不指向同一内存地址
student = ['Tom', 'Jack', 'Avril']
name = 'Jerry'
student.insert(1, name)
print(student) # ['Tom', 'Jerry', 'Jack', 'Avril']
del name
print(student) # ['Tom', 'Jerry', 'Jack', 'Avril'] # extend添加后,student中的['Jerry']为name值的复制
student = ['Tom', 'Jack', 'Avril']
name = ['Jerry']
student.extend(name)
print(student) # ['Tom', 'Jack', 'Avril', 'Jerry']
name.clear()
print(student) # ['Tom', 'Jack', 'Avril', 'Jerry'] student = ['Tom', 'Jack', 'Avril']
name = 'Jerry'
student.extend(name)
print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
del name
print(student) # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']
删除元素
- 使用remove方法删除指定值的元素
- 使用pop方法弹出栈顶元素,返回弹出元素
- 使用del关键字删除指定位置元素
- 使用clear方法清空列表元素,等于del a[:]
# 删除指定值的元素
student = ['Tom', 'Jack', 'Avril']
student.remove('Tom')
print(student) # 弹出栈顶元素
student = ['Tom', 'Jack', 'Avril']
s = student.pop()
print(s)
print(student) # 删除指定位置元素
student = ['Tom', 'Jack', 'Avril']
del student[1]
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]
用列表推导式实现矩阵转置:
# 矩阵转置
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
] # 方法一
newMatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print(newMatrix) # 方法二
newMatrix = []
for i in range(len(matrix[0])):
newMatrix.append([row[i] for row in matrix])
print(newMatrix) # 方法三
newMatrix = []
for i in range(len(matrix[0])):
newRow = []
for oldRow in matrix:
newRow.append(oldRow[i])
newMatrix.append(newRow)
print(newMatrix)
python3 入门 (二) 列表的使用的更多相关文章
- python3入门之列表和元组
获得更多资料欢迎进入我的网站或者 csdn或者博客园 前面一张主要学习了Python的安装,以及第一个程序helloword的编写,以及简单的输入和输出函数,这章主要介绍序列,列表,元组 序列 这章 ...
- python3入门之类
在面向对象的语言中,类是最重要的一环,python自然拥有类这个机制.python的类机制,与C++,java的区别不是很大,类的大多数的重要特性都被沿用了,一样可以多态,抽象,封装: python3 ...
- python3入门之集合set
之前介绍python的数据结构时,没有介绍set(集合)现在在这里稍微介绍下: set原理 Python 还 包 含 了 一 个 数 据 类 型-- set ( 集 合 ) . 集 合 是 一 个 无 ...
- python3入门之函数
相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...
- python3入门之赋值语句介绍
获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍赋值语句,以及几种特殊的赋值.下面附有之前的文章: python3入门之print,import,input介绍 python入门之字 ...
- python3入门之print,import,input介绍
本节主要介绍print,import和input,t函数,包括他们在python2.7和python3 的区别以及用法.下面附有之前的文章: python3的print函数的变化 python3之 ...
- python3入门之字典
获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍字典,字典也成映射,时python中唯一内建的映射类型.更多详细请点击readmore.下面附有之前的文章: python入门之字符串 ...
- python3入门之字符串
获得更多资料欢迎进入我的网站或者 csdn或者博客园 经过前面的介绍相信大家也对python有了一个初步的了解:本节主要介绍字符串,不管学习什么编语言字符串一定在其中扮演着重要的地位.本节主要讲解,字 ...
- Python3入门之软件安装
获得更多资料欢迎进入我的网站或者 csdn或者博客园 最近将我的Python笔记整理下,希望能对他人有所帮助,这是第一课,安装入门篇: windows下安装Python 1.下载,从这里下载:[下载链 ...
随机推荐
- SQL Server 2008 R2——VC++ ADO 操作 参数化查询
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- Spring-framework下载
下载版本,修改版本号就行. http://repo.springsource.org/libs-release-local/org/springframework/spring/4.3.2.RELEA ...
- HTML实体对照表
HTML开发特殊字符是没办法原样输出的,必须用到实体,为了以后查看方便,收藏一下实体对照表是必要的,另外,使用<xmp></xmp>标签可以原样输出,当然,也包括特殊字符啦! ...
- SQL优化法则小记
SQL优化技巧 1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表 driving ta ...
- linux—【用户和组的管理操作】(5)
用户:user 组:group 增加:add 修改:modify mod 删除:delete del useradd 增加用户 usermod 修改用户 userdel ...
- 孙鑫视频学习:VS2010中找不到【Tab order】菜单项
在学习孙鑫视频中,修改Tab顺序时,找不到VC6.0中提到的[Layout]->[Tab order]菜单项,但VC2010中可以用Ctrl+D调出来Tab顺序,或者[格式]->[Tab键 ...
- JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 数字对 (长乐一中模拟赛day2T2)
2.数字对 [题目描述] 小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R < ...
- Vector3.Dot 判断方位
判断方位 假设空间中有这几个坐标,判断一个物体在另一个物体的左边还是右边,前后还是后面 物体空间图 假如以C为中心,判断L是在它的左边还是右边 判断方法 using UnityEngine; usin ...
- java7-4 继承的练习
1.Override和Overload的区别,Overload能改变返回值类型吗? 答: Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象 Overload就是方法重载:在 ...