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.下载,从这里下载:[下载链 ...
随机推荐
- 问题解决——Group Box控件遮挡其他控件
转载请保持文章的完整性并显要地注明出处 本文链接:http://blog.csdn.net/wlsgzl/article/details/38042301 ====================== ...
- Python 元组知识点
1.元组是一个有序的集合,2.元组和列表一样可以使用索引.切片来取值.3.创建元组后不能在原地进行修改替换等操作.4.元组支持嵌套,可以包含列表.字典和不同元组.5.元组支持一般序列的操作,例如:+. ...
- (二)我的Makefile学习冲动&&编译过程概述
前言 一 年轻的冲动 二 学习曲线 1 Makefile基本语法 2 bash基础 3 world 三 编译过程概述 1 主机预装工具 2 编译host工具 3 编译交叉工具链 4 编译内核模块 5 ...
- hdu 1561 The more, The Better(树形dp,基础)
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 孙鑫视频学习:对第10章设置线宽时为什么不调用UpDateData(TRUE)的理解
在第10章10.2.1小节中,首先分别对视图类和对话框类添加了一个名为m_nLineWidth的int型变量,再将用户在CSetting dlg对话框的edit控件中输入的线宽值记录在dlg.m_nL ...
- UVA 12377 Number Coding --DFS
题意:给一串数字,第一个数是Num的话,要使后面的数字组成Num个数,而且为不降的,将这Num个数分配到9个素因子上作为指数,问能组成多少个不同的数 解法:dfs一遍,看后面的数字能组成Num个不降数 ...
- Fidder--实现手机的抓包
今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以 ...
- 转:Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板
http://www.cnblogs.com/lhb25/p/metronic-responsive-admin-dashboard-template.html
- View (四)视图状态及重绘流程分析
相 信大家在平时使用View的时候都会发现它是有状态的,比如说有一个按钮,普通状态下是一种效果,但是当手指按下的时候就会变成另外一种效果,这样才会给 人产生一种点击了按钮的感觉.当然了,这种效果相信几 ...
- css3爆炸效果更换图片轮播图
思路:给一个div设置一个背景图片1.jpg,然后在这个div上面用两个for循环动态的创建一个列数为C行数为R数量的span,并给这些span设置宽高.定位并设置背景图片0.jpg,然后设置每个sp ...