1. list函数,用于将字符串转换为列表

2. 基本的列表操作

修改列表 - 给元素赋值,使用索引表示法给特定的元素赋值,如x[1] = 2

删除元素 - 使用del语句即可

 name1 = ['a','d','g','h']
name2 = ['','','','']
del name1[1]
print(name1)
print(len(name1)) del name2[1:3]
print(name2)
print(len(name2)) 结果:
['a', 'g', 'h']
3
['', '']
2

给切片赋值 - 同时给多个元素赋值

 name = list('Perl')
name[1:] = list('ython')
print(name)
结果:
['P', 'y', 't', 'h', 'o', 'n']

给切片赋值 - 插入新元素(此时,切片工具中的第一个索引和第二个索引必须相同)

 name = list('Perl')
name[1:1] = list('ython')
print(name)
结果:
['P', 'y', 't', 'h', 'o', 'n', 'e', 'r', 'l']

3. 列表方法

方法是与对象(列表、数、字符串等)联系紧密的函数。调用方法:

object.method(arguments)

3.1 append - 将一个对象附加到列表末尾 - P34

3.2 clear - 就地清空列表内容

 list1 = [,,]
list1.append()
print(list1)
list1.clear()
print(list1)
结果:
[, , , ]
[]

3.3 copy - 复制列表

 a = [1,2,3,4]
b = a
b[1] = 5
print(a)
print(b)
结果:
[1, 5, 3, 4]
[1, 5, 3, 4]

上述直接赋值的方法,让b指向a,并不能真正意义上复制一个列表给b,因为他们同时指向了同一个列表,则修改b也是在修改原列表。

 a = [1,2,3,4]
b = a.copy()
b[1] = 6
print(a)
print(b)
结果:
[1, 2, 3, 4]
[1, 6, 3, 4]

3.4 count - 计算指定的元素在列表中出现的次数

 tobe = ['to','be','or','not','to','be']
print(tobe.count('to'))
结果:2 x = [[1,2],1,1,[2,1,[1,2]]]
print(x.count(1))
print(x.count([1,2]))
结果:2,1

3.5 extend - 同时将多个值附加到列表末尾(将修改被扩展的序列)

 a = [1,2,3]
b = ['a','b','c','d']
a.extend(b)
print(a)
结果:
[1, 2, 3, 'a', 'b', 'c', 'd']

 a = [1,2,3]
b = ['a','b','c','d']
# 这里看看差异
c = a.extend(b)
print(a)
结果:
[1, 2, 3, 'a', 'b', 'c', 'd']

这里如果将c = a.extend(b)(新建一个c变量指向 a.extend(b) ),实际上c变量什么都没有,为None。

3.6 index - 用于在列表中查找指定值第一次出现的索引(若所查找值不属于该列表,则会报错)

 a_list = ['a','b','c','d']
print(a_list.index('c'))
结果:2

3.7 insert - 用于将一个对象插入列表

 num = [1,2,3,4]
num.insert(2,['a','b','c'])
print(num)
结果:
[1, 2, ['a', 'b', 'c'], 3, 4]

同extend一样,也可以使用切片赋值,来获得一样的效果。

3.8 pop

从列表中删除一个元素(末尾为最后一个元素),并返回一个元素

num = [1,2,3,4]
c = num.pop(2)
print(num)
print(c)
结果:
[1, 2, 4]
3

pop是唯一既修改列表又返回一个非None值得列表方法,参见3.5。

*** pop可实现一种常见得数据结构——栈(stack),后进先出。(待拓展学习,参见第10章)

3.9 remove

用于删除第一个为指定值得元素。

 tobe = ['to','be','or','not','to','be']
tobe.remove('to')
print(tobe)
结果:
['be', 'or', 'not', 'to', 'be']

3.10 reverse

按相反得顺序排列列表中的元素。

 num = [1,2,3,4]
num.reverse()
print(num)
结果:
[4, 3, 2, 1]

3.11 sort - 用于对列表就地排序(对原列表进行修改,不返回排序后列表副本)

 x = [6,4,5,3,2,0,1]
x.sort()
print(x)
print()
结果:
[0, 1, 2, 3, 4, 5, 6]
需要排序后的列表副本,并保持原列表不变时,有如下两个方法
 x1 = [6,4,5,3,2,0,1]
# 方法1
y1 = x1.copy()
y1.sort()
print(x1)
print(y1)
print()
# 方法2用sorted()函数,改函数会返回一个列表
y2 = sorted(x1)
print(y2)
11 结果:
12 [6, 4, 5, 3, 2, 0, 1]
13 [0, 1, 2, 3, 4, 5, 6]
14 [0, 1, 2, 3, 4, 5, 6]

3.12 高级排序

方法sort接受两个可选关键字参数:key和reverse。

参数key,可将其设置为一个用于排序的函数(很多情况下,将参数key设置为一个自定义函数很有用,详细见第6章);

 x = ['afd','adagdh','eqr6tytregh','rewt','jhgfd']
x.sort(key=len)
print(x)
结果:
['afd', 'rewt', 'jhgfd', 'adagdh', 'eqr6tytregh']

参数reverse,可将其指定为一个真值(True或False),指定是否要按相反顺序排序。

 x = ['afd','adagdh','eqr6tytregh','rewt','jhgfd']
x.sort(key=len,reverse=True)
print(x)
结果:
['eqr6tytregh', 'adagdh', 'jhgfd', 'rewt', 'afd']

20190805-Python基础 第二章 列表和元组(2)列表的更多相关文章

  1. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  2. python 的 集合,字典,元组,列表

    元组 tuple  a = (1,2,3) 元组不能修改 可权嵌套列表  如 (1,2,3,[1,2,3]) 里面的列表可修改  一般不这样用 列表list  a = [1,2,3] 集合set  a ...

  3. 20190804-Python基础 第二章 列表和元组

    容器,Python支持一种数据结构的基本概念(容器,基本上就是可包含其他对象的对象.) 两种主要的容器是:序列(如列表和元组)和映射(如字典) Ps: 列表与元组区别,列表可修改,元组不能. 对序列的 ...

  4. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  5. Python基础学习参考(六):列表和元组

    一.列表 列表是一个容器,里面可以放置一组数据,并且列表中的每个元素都具有位置索引.列表中的每个元素是可以改变的,对列表操作都会影响原来的列表.列表的定义通过"[ ]"来定义,元素 ...

  6. python基础知识3——基本的数据类型2——列表,元组,字典,集合

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...

  7. 流畅的python 读书笔记 第二章 序列构成的数组 列表推导

    列表推导是构建列表(list)的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.如果你的代码里并不经常使用它们,那么很可能你错过了许多写出可读性更好且更高效的代码的机会. 2.2.1 列表推 ...

  8. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  9. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

随机推荐

  1. java试题复盘——11月13日

    上: 10. AccessViolationException异常触发后,下列程序的输出结果为(   A   ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AccessViol ...

  2. 在AspNetCore3.0中使用Autofac

    1. 引入Nuget包 Autofac Autofac.Extensions.DependencyInjection 2. 修改Program.cs 将默认ServiceProviderFactory ...

  3. HDU 1257 最少拦截系统 ——(LIS)

    想了一下感觉和lis有关,交了果然AC.想不到很好的证明方法,试做证明如下:lis的每一个点都是一个不上升系统中的一员,设其为a[i],那么a[i-1]<a[i]肯定是成立的(lis的性质),夹 ...

  4. Spring框架IOC解说

    控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...

  5. Linux上命令行检出、提交和更新操作

    1.创建工作区目录 列:我创建两个工作目录,用来模拟两个开发人员,命令如下:(工作路径可以按照自己需要随意改变) mkdir -p /root/workspace/harry mkdir -p /ro ...

  6. Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明

    线程组:用来设置并发的数量和模式.是用来模拟用户并发的组件.JMeter 的每个任务都是用线程来处理的. 线程数:要并发的请求数量. Ramp-Up Period: 在多次时间内把这些并发的请求发送完 ...

  7. bootstrap 上下页滚动

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  8. fork() 成为负担,需要淘汰 spawn

    A fork() in the road - Microsoft Research https://www.microsoft.com/en-us/research/publication/a-for ...

  9. seaweedfs文件存储服务器搭建

    官方网站: https://github.com/chrislusf/seaweedfs/wiki/Getting-Started 概述 seaweedfs是一个非常优秀的由 golang 开发的分布 ...

  10. Qt编写自定义控件32-等待进度条控件

    一.前言 在各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了. 等待进度条有好几种办法,比如直接叫 ...