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.下载,从这里下载:[下载链 ...
随机推荐
- mac下 home-brew安装及php,nginx环境安装及配置
Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案, ...
- 烂泥:KVM、kickstart与FTP集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章中,我们介绍了有关KVM.kickstart与NFS集成的相关内容.在这节我们将继续介绍FTP与KVM.kickstart集成的相关操作. ...
- Android 滑动效果入门篇(一)—— ViewFlipper
ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放.又ViewAnimator继承至于Frame ...
- mysql存储过程procedure
传送门 http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html ) ); DROP PROCEDURE IF EXISTS ju ...
- Linux学习之三——操作档案与目录
一. 目录文档操作指令 1. pwd 显示目前所在目录 如果加上-P 的选项,则取得正确的目录名称,而不是以链接文件的路径来显示. 例如CentOS下,刚刚好/var/mail是/var/spool/ ...
- 【分享】iTOP-4412开发板使用之初体验[多图]
近期入手了4412开发板,配的7寸屏和WIFI模块,GPS模块,下面晒个照片介绍一下,手机拍摄图片有点模糊,实物很精致,是我所见过最好的板子.b( ̄▽ ̄)d 预装的Android4.0.3系统,5点以 ...
- [转]设定version 更新js缓存
http://zhenggm.iteye.com/blog/680600 遇到的问题: 在访问量比较大的系统中,我们需要将一些静态的文件在客户端缓存,以减少下载的流量,从而加快客户端访 ...
- 设计模式笔记感悟 - Creational篇
body,td,p { // 这对大括号里描述网页的背景 margin-left:40px; margin-right:40px; font-size: 10pt; } div.vim { width ...
- codeforces 480A A. Exams(贪心)
题目链接: A. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- css让浮动元素水平居中
对于定宽的非浮动元素我们可以用 margin:0 auto; 进行水平居中. 对于不定宽的浮动元素我们也有一个常用的技巧解决它的水平居中问题.如下: HTML 代码: <div class=&q ...