《Python语言程序设计》第十章学习笔记

《Python语言程序设计》学习笔记

笔记选自《Python语言程序设计》[美]梁勇 著
本篇笔记没有记录用python绘画的turtle库


第10章 列表

  • 创建列表
list1=list()
list2=list([2, 3, 4])
list3=list(["red", "green", "blue"])
list4=list(range(3, 6)) #3,4,5
list5=list("abcd")

可简写:

list1=[]
list2=[2, 3, 4,]
list3=["red", "green"]

一个列表既可以包含同样类型的元素也可以包括不同类型的元素

list4=[2, "three", 4]
  • 列表和字符串一样,是一种序列类型,对字符串的序列操作同样适用于列表。

在这里插入图片描述

  • 列表使用的函数:len(list)max/min(list)sum(list)返回列表中所有元素之和
    random.shuffle(list) 随意排序列表中的元素

  • 下标运算符[]

myList[index] # index范围0到len(myList)-1

Python也允许使用负数作为下标来引用相对于列表末端的位置。将列表长度和负数下标相加就可以得到实际的位置。

list[-1]list[-1+len(list1)]一样,它们都给出列表的最后一个元素。

  • 列表截取[start: end]:返回列表的一个片段。这个片段是下标从start到end-1的元素构成的一个子列表。起始下标和结尾下标是可以省略的,这种情况下,起始下标为0而结尾下标是最后一个下标。

  • 在截取过程中使用负数下标:

list1=[2,3,5,2,33,21]
list1[1:-3]
# 输出[3,5]

list1[1:-3]list1[1:-3+len(list1)]一样。

  • 如果start>=end,那么list[start:end]会返回一个空表。如果end指定了一个超出列表结尾的位置,那么Python会将使用列表长度代替end。

  • 连接运算符(+)来组合两个列表

  • 复制运算符(*)复制列表中的元素

  • in或者not in运算符判断一个元素是否在列表中

  • 使用for循环遍历元素

# 对于mylist中的每个元素u,输出它
for u in mylist:
  print(u)

以不同的顺序遍历列表或者改变列表中的元素,那么仍然必须使用下标变量。

for i in range(0, len(myList), 2):
  print(myList[i])
  • 比较列表
    使用比较运算符对列表进行比较,两个列表必须包含同样类型的元素,使用字典顺序比较每个元素。

  • 列表解析:提供一种创建顺序元素列表的简洁方式,方括号内包含后跟一个for子句的表达式,之后是0或多个for或if子句。列表解析可以产生一个由表达式求值结果组成的列表。

list1=[x for x in range(5)] # 返回[0,1,2,3,4]
list2=[0.5*x for x in list1] # 返回[0.0, 0.5, 1.0, 1.5, 2.0]
list3=[x for x in list2 if x<1.5] # 返回[0.0, 0.5, 1.0]

列表方法:一旦列表被创建,可以使用list类的方法来操作列表。

方法解释
append(x: object): None将元素x添加到列表结尾
count(x: object): int返回元素x在列表中的出现次数
extend(l: list): int返回元素x在列表中第一次出现的下标
insert(index: int, x: object): None将元素x插入列表中指定下标处。删除给定位置的元素并返回它。参数i不指定时,则删除并返回列表最后一个元素
pop(i): object删除并返回列表最后一个元素
remove(x: object): None删除列表中第一次出现的x
reverse(): None将列表中的所有元素倒序
sort(): None以升序对列表中的元素排序
  • 将字符串分成列表:split()方法
items="Jane John Peter Susan".split() 

将字符串items分离成列表['Jane', 'John', 'Peter', 'Susan'],字符串中的条目是被空格分隔的。

也可以使用非空格的限定符

items="09/20/2012".split("/")

被分离成['09', '20', '2012']

· 复制列表

浅拷贝:它仅仅是将list1引用值赋值给list2。在这条语句后,list1和list2都将指向同一个列表。list2之前指向的列表将不再被引用,它就变成了垃圾,所占用的内存空间将被自动收集起来被Python编译器重新使用。

list2=list1

深拷贝:将list1完全相同的复制给list2

list2=[x for x in list1]
# 或简化为
list2=[]+list1
  • 将列表传递给函数:由于列表是一个可变对象,所以列表的内容可能会在函数调用后改变。
  • 从函数返回一个列表:当函数返回一个列表时,就会返回这个列表的引用值。

本章总结

  1. 可以利用Python内置的lenmaxminsum函数返回一个列表的长度、列表的最大值和最小值以及列表中所有元素之和。
  2. 可以使用random模块中的shuffle函数将一个列表中的元素打乱。
  3. 可以使用下标运算符[]来引用列表中的一个独立元素。
  4. 程序员常常会错误地用下标1来引用列表中的第一个元素,但它应该是0。这被称为下标出1错误。
  5. 可以使用连接操作符+来连接两个列表,使用复制运算符*来复制元素,使用截取运算符[:]获取一个子列表,使用innot in运算符来检查一个元素是否在列表中。
  6. 可以使用for循环来遍历列表中的所有元素。
  7. 可以使用比较运算符来比较两个列表中的元素。
  8. 一个列表对象是可变的。可以使用方法appendextendinsertpopremove向一个列表添加元素和从一个列表删除元素。
  9. 可以使用index方法获取列表中一个元素的下标,使用count方法来返回列表中元素的个数。
  10. 可以使用sortreverse方法来对一个列表中的元素进行排序和翻转。
  11. 可以使用split方法来将一个字符串分离成列表。
  12. 当调用一个带列表参数的函数时,列表的引用则被传递给这个函数。
  13. 如果一个列表已经排好序,那么在列表中查找一个元素时二分查找比线性查找效率更高。
  14. 选择排序将列表中的最小元素和第一个元素交换。然后找到剩余元素中最小的元素并与剩余元素的第一个交换,以此类推,直到只剩一个元素为止。
  15. 插入排序算法重复地将一个新元素插入排好序的子列表中,直到整个表排好序为止。

关键术语

英文中文
anonymous list匿名列表
binary searches二分查找
garbage collection垃圾回收
index下标
insertion sort插入排序
linear searches线性查找
selection sort选择排序
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值