本文会集中讲Python3中的可变序列——列表。

Python序列有3种基本序列类型(list、tuple、range)、处理文本的序列类型(str)、处理二进制数据的序列类型(bytes、bytearray、memoryview)。

其中这些序列类型又可以分为可变序列(list)和不可变序列(tuple、str)。

一般来说,可变序列会比不可变序列多一些通用语法(注意不是某种类型的特定用法),所以,本文我会先讲序列的通用语法,再讲可变序列list具体的特殊用法。

一、序列的通用用法

这里先给出序列(不管是可变序列还是不可变序列)的通用用法:

操作

结果

x in s / x not in s

判断x是否在序列s中(True、False)

s + t

将序列s和合并,形成一个新序列

(注意s和t应是相同类型的序列)

s * n / n * s

返回一个重复s内容n次的新序列

s[i]

返回s的第i+1个元素

s[i:j]

返回s的第 i+1到j个元素,作为新的序列

s[i:j:k]

按步长返回s的第 i+1到j个元素,作为新的序列

len(s) / min(s) / max(s)

返回s序列的长度、最小元素、最大元素

s.index(x [, i [, j]])

返回在s中的第一个出现的x的索引(可通过i和j规定查找范围

s.count(x)

查看s序列中x元素的出现次数

示例:

>>> s = 'hello,'

>>> t = 'world'

>>> s +t'hello,world'

>>>

>>> list = [1,2,3]>>> 3 *list

[1, 2, 3, 1, 2, 3, 1, 2, 3]>>>

>>> list = [1,2,3,1,2,3,1,2,3]>>> list.index(1,2,8) #返回列表中索引为2到7之间出现的第一个1的列表索引

3

此外,相同类型的序列还可以进行比较。

二、可变序列的通用用法

在上面的基础上,可变序列还有自己的通用用法,如下表所示:

操作

结果

s [i] = x

对s的第i+1个元素重新赋值

s [i:j] = t

用t序列(可迭代)中的元素替换s序列指定

范围内的元素(注意t的长度要和范围一致)

del s [i:j]

删除s某个范围内的元素

s [i:j:k] = t

同上,只是多了个步长而已

del s [i:j:k]

同上,只是多了个步长而已

s.append(x)

在序列s的末尾新增一个元素x

s.clear()

删除s中所有元素(与del s[:]相同)

s.copy()

s的浅拷贝(与s[:]相同)

s.extend(t)或s + = t

使用t的内容延伸s(大部分与s [len(s):len(s)] t3 > = t)

s *= n

更新s,其内容重复n次

s.insert(i, x)

在由i给出的索引处插入x到s(同s [i:i] = [x])

s.pop([i])

返回并删除索引为i的元素

s.remove(x)

删除s序列中第一个x

s.reverse()

对s进行翻转

>>> s = 'Jeremy’

>>>s.reverse()

Traceback (most recent call last):

File"", line 1, in s.reverse()

AttributeError:'str' object has no attribute 'reverse'

>>>

>>> s = [1,2,3,4,5]>>> s *= 2

>>>s

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]>>> s.insert(5,'s')>>>s

[1, 2, 3, 4, 5, 's', 1, 2, 3, 4, 5]>>>

>>> s.sort() #排序时要注意类型

Traceback (most recent call last):

File"", line 1, in s.sort()

TypeError: unorderable types: str()>>

>>>s.clear()>>>s

[]

三、列表list

1、列表的创建

一维列表:

>>>

>>> List = [] #(1)初始化为空列表

>>>List

[]>>>

>>> a = 2

>>> List1 = [1,a,'str'] #(2)初始化为非空表

>>>List1

[1, 2, 'str']>>>

>>> List2 = [0 for i in range(5)] #(3)使用循环

>>>List2

[0, 0, 0, 0, 0]

二维列表:

>>>

>>> List3 = [[0 for col in range(4)]for row in range(4)] #(1)使用循环

>>>List3

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]>>>

>>> List4 = [[]] * 3 #(2)方法2

>>>List4

[[], [], []]>>>

>>> #注意:方法2--修改List4的任何元素都修改 其他子列表

>>> List4[0].append(10)>>>List4

[[10], [10], [10]]>>>

>>> List4[0][0] = 20

>>>List4

[[20], [20], [20]]>>> #新增/修改一个值的时候,整个列表都会修改。所以最好不要用这种方法

>>>

>>> List5 = [[0,1,2],[3,4]] #方法3

>>>List5

[[0,1, 2], [3, 4]]

顺便分析一下方法2出现问题的原因:list * n是n个list的浅拷贝的连接,list乘以n以后还是一个 list, 只是对原list里面的 元素 是浅拷贝了n份。

[[]]是一个含有一个空列表元素的列表,[ [] ] * 3, 里面的元素是 [], 这是一个list,所以会存在浅拷贝之后指向同一个list的问题。所以[[]]*3表示3个指向这个空列表元素的引用(这个元素其实是没有被复制的),修改任何一个元素都会改变整个列表。

而myList = [([0] * 3)for i in range(4)]这种方法则没有这种问题,因为[0] * 3 , 里面的元素是 0, 是一个 int ,不可变对象,浅拷贝没问题。

2、列表的相关操作

如上面表格所示

python可变序列_Python3基础(二)—— Python可变序列相关推荐

  1. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  2. 【python教程入门学习】学python要多久,0基础学python有多难

    学python要多久,0基础学python有多难,这是很多想学习python语言同学绕不开的问题,都害怕花完钱最终没有应有的回报!对于毫无经验0基础的同学来说学习python什么最重要,方向选对坚持下 ...

  3. python入门教材论坛_GitHub - aisuhua/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

  4. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

  5. python gui编程书籍_GitHub - ZhaoGui/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

  6. python入门指南推文_GitHub - Hiufan/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...

    PythonShare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 零基础 想学习Python者.本文本文由@史江歌(shijiangg ...

  7. 零基础学python 视频_全网最全Python视频教程真正零基础学习Python视频教程 490集...

    Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python Web开发进阶课程,手把手教你用Python开发完整的商业 ...

  8. Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐

    转载自:https://github.com/Yixiaohan/codeparkshare Python初学者(零基础学习Python.Python入门)书籍.视频.资料.社区推荐 本文 主要 针对 ...

  9. 零基础学python需要多久-零基础学习Python开发需要多长时间?

    原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...

  10. 0基础学python要多久-零基础学习Python开发需要多长时间?

    原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...

最新文章

  1. [javaweb] servlet-session 会话跟踪技术 与 session保存作用域 (三)
  2. 【树莓派编程】检测有没有物体移动 +人脸识别
  3. mysql55和57的区别_技术分享 | MySQL:count(*)、count(字段) 实现上区别
  4. Multi-thread--C++11中std::mutex的使用
  5. ICCV2021 |上交、北理、百度联合研究视频缩放任务中的自条件概率学习
  6. Android获取设备隐私 忽略6.0权限管理
  7. 不能右键新建html文件,win10无法新建文件夹怎么办 win10右键新建菜单设置方法图文教程...
  8. 随便说说Silverlight
  9. Jquery 数组操作(转)
  10. 微信H5页面自定义微信分享内容
  11. 实现复制文本到剪贴板功能
  12. FDDB人脸数据集/python图像批量处理
  13. VS QT进行相机镜头控制软件二次开发
  14. wifi信号衰减与距离关系_wifi无线信号传输衰减距离计算公式
  15. AtCoder Beginner Contest 245 A~E 题解
  16. 股市入门:应对股市涨跌方法
  17. 【转】职场学做“功夫熊猫”
  18. 外边距与内边距的区别
  19. 企业计算机系统管理基本要求,药品经营企业计算机系统介绍.ppt
  20. 信息熵与压缩编码基础

热门文章

  1. matlab simulink_简单五步实现 MATLAB/Simulink 锂电池建模
  2. 利用Python多进程执行,加快MySQL批量添加数据的执行速度
  3. 单进程select版-TCP服务器(python 版)
  4. python中多进程及进程间通信的方法
  5. 说说C#的async和await
  6. MVC教程第七篇:闲话ASP.NET
  7. 如何通过序列化在网络间传递对象,网络协议:轻松定义自己的网络通讯协议
  8. 深度学习《GAN模型学习》
  9. 为什么两个controller的session的id不一样_我,为什么会离婚?我为什么离婚?
  10. 无人驾驶三 卡尔曼滤波及无迹卡尔曼滤波的几何意义