列表用于组织其它数值,即写在方括号之间、用逗号分隔开的数值列表。列表内的项目不必全是相同的类型。

列表的定义

 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 入门 (二) 列表的使用的更多相关文章

  1. python3入门之列表和元组

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 前面一张主要学习了Python的安装,以及第一个程序helloword的编写,以及简单的输入和输出函数,这章主要介绍序列,列表,元组 序列  这章 ...

  2. python3入门之类

    在面向对象的语言中,类是最重要的一环,python自然拥有类这个机制.python的类机制,与C++,java的区别不是很大,类的大多数的重要特性都被沿用了,一样可以多态,抽象,封装: python3 ...

  3. python3入门之集合set

    之前介绍python的数据结构时,没有介绍set(集合)现在在这里稍微介绍下: set原理 Python 还 包 含 了 一 个 数 据 类 型-- set ( 集 合 ) . 集 合 是 一 个 无 ...

  4. python3入门之函数

    相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...

  5. python3入门之赋值语句介绍

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍赋值语句,以及几种特殊的赋值.下面附有之前的文章: python3入门之print,import,input介绍 python入门之字 ...

  6. python3入门之print,import,input介绍

    本节主要介绍print,import和input,t函数,包括他们在python2.7和python3 的区别以及用法.下面附有之前的文章: ​ python3的print函数的变化 python3之 ...

  7. python3入门之字典

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍字典,字典也成映射,时python中唯一内建的映射类型.更多详细请点击readmore.下面附有之前的文章: python入门之字符串 ...

  8. python3入门之字符串

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 经过前面的介绍相信大家也对python有了一个初步的了解:本节主要介绍字符串,不管学习什么编语言字符串一定在其中扮演着重要的地位.本节主要讲解,字 ...

  9. Python3入门之软件安装

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 最近将我的Python笔记整理下,希望能对他人有所帮助,这是第一课,安装入门篇: windows下安装Python 1.下载,从这里下载:[下载链 ...

随机推荐

  1. hibernate一对多映射实现

    Junit4方法详解 setUpBeforeClass()类初始化前调用 tearDownAfterClass()类初始化后调用 setUp()在测试方法前调用 tearDown()在测试方法后调用 ...

  2. jenkins 更换主数据目录

    工作中,由于Jenkins默认的主目录空间太小,导致需要将Jenkins默认的主目录修改到其它目录.本文针对更改Jenkins的主目录详细介绍. 注意:在Jenkins运行时是不能更改的. 请先将Je ...

  3. FZU Problem 2150 Fire Game

    Problem 2150 Fire Game Accept: 145    Submit: 542 Time Limit: 1000 mSec    Memory Limit : 32768 KB P ...

  4. css中元素居中总结

    很多时候,我们需要让元素居中显示:1. 一段文本的水平居中,2. 一张图片的水平居中,3. 一个块级元素的水平居中:4. 单行文本的竖直居中,5. 不确定高度的一段文本竖直居中,6. 确定高度的块级元 ...

  5. 《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP

    1.广播和多播都只适用于UDP,因为TCP是面向连接的,需要将两台主机的两个进程绑定在一起,即IP地址和端口对 2.通常,网卡能看到网络中的每一个数据帧,但是往往它只接受目的地址与自己MAC地址相同的 ...

  6. javascript编程习惯总结

    总结一下javascript需要注意的一些细节的地方: 1:声明一个对象:var a={ }; 2:另一个对象继承一个对象:Var b=Object.create(a);如果父类的属性和方法发生改变, ...

  7. 第2章 面向对象的设计原则(SOLID):6_开闭原则

    6. 开闭原则(Open Closed Principle,OCP) 6.1 定义 (1)一个类应该对扩展开放,对修改关闭.要求通过扩展来实现变化,而且是在不修改己有的代码情况下进行扩展,也不必改动己 ...

  8. android窗口泄漏,isInEditMode解决可视化编辑器无法识别自定义控件的问题

    android窗口泄漏 在做项目是遇到这个错误:google:WindowManager: Activity has leaked window. 产 生原因:我们知道Android的每一个Activ ...

  9. 注解与反射 ---Spring与Mybatis等框架的实现原理

    Java中各大框架,无论是AOP 还是 IoC 其基本实现思路都是源自Java 运行时支撑的反射功能, 而反射最基本的一点就是 任何一个类 其在JVM环境中,都有一个对象的Class对象,这个对象提供 ...

  10. Wordpress 3.5.1的debug流水账

    一个合作网站是基于Wordpress做的, 不能正常使用FeedWordPress这个插件, 对方没有开发者, 只有一个类似于美工和编辑的人, 因为我在本地使用同样的版本(Wordpress 3.5. ...