博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 入门 (二) 列表的使用
阅读量:7008 次
发布时间:2019-06-28

本文共 4243 字,大约阅读时间需要 14 分钟。

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

 

列表的定义

1 student = ['Tom', 'Jack', 'Avril']

 

添加元素

  • 将另一个列表直接赋值给该列表
  • 使用"[头下标:尾下标]"j将另一个列表的指定元素值拷贝至该列表
  • 使用"+"连接符,将元素添加至列表末尾
  • 使用" * "乘号得到多个相同元素
  • 使用append方法,将元素添加至列表末尾
  • 使用extend方法,将元素添加至列表末尾
  • 使用insert方法,将元素插入至指定位置

 

1 student = ['Tom', 'Jack', 'Avril'] 2 student *= 3 3 print(student)  #['Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril', 'Tom', 'Jack', 'Avril'] 4  5  6 # student中变量为name值的复制 7 name = ['Jerry', 'Lucy'] 8 student = name[:] 9 print(student)  # ['Jerry', 'Lucy']10 name.clear()11 print(student)  # ['Jerry', 'Lucy']12 13 14 # *得到的每一相同项指向同一内存地址15 name = ['Jerry']*316 print(name)  # ['Jerry', 'Jerry', 'Jerry']17 print(id(name[0]))  # 5458008818 print(id(name[1]))  # 5458008819 print(id(name[2]))  # 5458008820 21 22 # name2与name1指向同一内存地址23 name1 = ['Jerry']24 name2 = name125 print(name2)  # ['Jerry']26 name1.clear()27 print(name2)  # []28 29 # student中变量为name值的复制,与name不指向同一内存地址30 name = ['Jerry']31 student = name*332 print(student)  # ['Jerry', 'Jerry', 'Jerry']33 name.clear()34 print(student)  # ['Jerry', 'Jerry', 'Jerry']35 36 37 # append添加后,student中的['Jerry']与name变量指向同一内存地址38 student = ['Tom', 'Jack', 'Avril']39 name = ['Jerry']40 student.append(name)41 print(student)  # ['Tom', 'Jack', 'Avril', ['Jerry']]42 name.clear()43 print(student)  # ['Tom', 'Jack', 'Avril', []]44 45 46 # 与name变量不指向同一内存地址47 student = ['Tom', 'Jack', 'Avril']48 name = 'Jerry'49 student.append(name)50 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']51 del name52 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']53 54 55 # 同上,insert插入后,student中的['Jerry']与name变量指向同一内存地址56 student = ['Tom', 'Jack', 'Avril']57 name = ['Jerry']58 student.insert(1, name)59 print(student)  # ['Tom', ['Jerry'], 'Jack', 'Avril']60 name.clear()61 print(student)   # ['Tom', [], 'Jack', 'Avril']62 63 64 # 与name变量不指向同一内存地址65 student = ['Tom', 'Jack', 'Avril']66 name = 'Jerry'67 student.insert(1, name)68 print(student)  # ['Tom', 'Jerry', 'Jack', 'Avril']69 del name70 print(student)  # ['Tom', 'Jerry', 'Jack', 'Avril']71 72 73 # extend添加后,student中的['Jerry']为name值的复制74 student = ['Tom', 'Jack', 'Avril']75 name = ['Jerry']76 student.extend(name)77 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']78 name.clear()79 print(student)  # ['Tom', 'Jack', 'Avril', 'Jerry']80 81 82 student = ['Tom', 'Jack', 'Avril']83 name = 'Jerry'84 student.extend(name)85 print(student)  # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']86 del name87 print(student)  # ['Tom', 'Jack', 'Avril', 'J', 'e', 'r', 'r', 'y']

 

  

删除元素

  • 使用remove方法删除指定值的元素
  • 使用pop方法弹出栈顶元素,返回弹出元素
  • 使用del关键字删除指定位置元素
  • 使用clear方法清空列表元素,等于del a[:]
1 # 删除指定值的元素 2 student = ['Tom', 'Jack', 'Avril'] 3 student.remove('Tom') 4 print(student) 5  6 # 弹出栈顶元素 7 student = ['Tom', 'Jack', 'Avril'] 8 s = student.pop() 9 print(s)10 print(student)11 12 # 删除指定位置元素13 student = ['Tom', 'Jack', 'Avril']14 del student[1]15 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]

 

用列表推导式实现矩阵转置:

1 # 矩阵转置 2 matrix = [ 3     [1, 2, 3], 4     [4, 5, 6], 5     [7, 8, 9], 6     [10, 11, 12] 7 ] 8  9 # 方法一10 newMatrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]11 print(newMatrix)12 13 # 方法二14 newMatrix = []15 for i in range(len(matrix[0])):16     newMatrix.append([row[i] for row in matrix])17 print(newMatrix)18 19 # 方法三20 newMatrix = []21 for i in range(len(matrix[0])):22     newRow = []23     for oldRow in matrix:24         newRow.append(oldRow[i])25     newMatrix.append(newRow)26 print(newMatrix)

 

转载于:https://www.cnblogs.com/z941030/p/4831978.html

你可能感兴趣的文章
ORA-00845: MEMORY_TARGET not supported on this system
查看>>
完美解决failed to open stream: HTTP request failed!(file_get_contents引起的)
查看>>
安装包大全
查看>>
Mysql 通过全量备份和binlog恢复整体数据
查看>>
使用paramiko模块在远程服务器执行命令
查看>>
Cannot change version of project facet Dynamic web
查看>>
Nginx中文手册
查看>>
jqgrid saveRow 保存行 编辑数据向后台保存的使用
查看>>
离职后的选择
查看>>
Java编写QQ邮件发送程序
查看>>
JavaWeb
查看>>
我的友情链接
查看>>
Struts2输入<无提示解决方法
查看>>
字符串资源多语言的出错问题
查看>>
集合框架
查看>>
Git 大杂烩(初学git 常用的命令)
查看>>
清除默认样式
查看>>
padding-left: 20%;position: relative; left: 50%;
查看>>
zabbix专题:第七章 添加图像Graphs,添加聚合图形Screens
查看>>
移动端随记:flexbox兼容处理
查看>>