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

列表的定义

 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. 关于SqlDateTime溢出的问题

    问题:  项目中为了在时间上保持一致性,将所有时间都转化为了UTC时间. 其中有一段SqlDateTime.MinValue的代码,由于疏忽将其转为UTC时间后导致了 "SqlDateTim ...

  2. ELK 信息统计分析-1

    Aggregations 格式如下: "aggregations"{ //可以简写为aggs "<aggregation_name>":{ //名称 ...

  3. Python中的库使用之一 PIL

    先上代码:本文主要工给自己参考,在需要的时候直接搜索查找就行了,不想看没有实际运行例子的文档,当参考完这部分还哦未能解决问题在参考PIL的相关文档! Skip to content This repo ...

  4. LESSON THREE

    安装redis,并使用ruby进行简单测试.             使用redis客户端ruby测试 安装gem yum install rubygems  安装ruby所需的redis-rb程序库 ...

  5. Hadoop_FileInputFormat分片

    Hadoop学习笔记总结 01. InputFormat和OutFormat 1. 整个MapReduce组件 InputFormat类和OutFormat类都是抽象类. 可以实现文件系统的读写,数据 ...

  6. 【Android UI设计与开发】4.底部菜单栏(一)Fragment介绍和简单实现

    TabActivity在Android4.0以后已经被完全弃用,取而代之的是Fragment.Fragment是Android3.0新增的概念,Fragment翻译成中文是碎片的意思,不过却和Acti ...

  7. javascript/jquery键盘事件介绍

    一.首先需要知道的是:1.keydown()keydown事件会在键盘按下时触发.2.keyup()keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件3.keypress()keypres ...

  8. Django项目中model增加了新字段怎样更新?

    Django是不直接支持syncdb更新数据库的字段的,必须重新建立. 或者改一个表名新建一个表... 刚刚想出来一招: 自己在表上面先加一个字段,然后再在model上面改,貌似是可以的.

  9. 【转】Python中string的strip,lstrip,rstrip用法

    Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符. 这三个函数都可传入一个参数,指定要去除的首尾字符. 需要注意的是,传入的是 ...

  10. 【转】${sessionScope.user}的使用方法

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...