序列中的每个元素都有自己的编号,有6中内建序列:列表、元组、字符串、Uniclude字符串、buffer对象和xrange对象。列表和元组的主要区别在于,列表可以修改,元组则不能。序列和映射是两类主要的容器,映射中的每个元素都有自己的一个名字(键),集合既不是序列也不是容器类型。

所有序列类型都可以进行某些特定的操作。这些操作包括:索引、切片、加、乘、迭代,检查某个元素是否属于序列的成员。两种相同类型的序列才能进行连接操作。None是一个python内建值,可以使用none来初始化一个长度为10的列表。

>>> sequence = [None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

列表(列表内容可变的数据结构)

1. list函数,把序列转换为列表,适用于所有类型的序列。

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

2. 改变列表的方法:元素赋值,元素删除,分片赋值以及列表方法(请注意,并不是所有的列表方法都真正地改变列表)。不能为一个位置不存在的元素进行赋值。

列表的分片赋值可以用于修改某一个元素,某几个元素,添加元素,删除元素等。

>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Ear']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Ear']
>>> names[1:2] = ['Angelia', 'PGL', 'PeiQi', 'LXL']
>>> names
['Alice', 'Angelia', 'PGL', 'PeiQi', 'LXL', 'Dee-Dee', 'Ear']
>>> names[0:0] = ['Hito', 'XieNa', 'HJiong']
>>> names
['Hito', 'XieNa', 'HJiong', 'Alice', 'Angelia', 'PGL', 'PeiQi', 'LXL', 'Dee-Dee', 'Ear']
>>> names[0:1] = []
>>> names
['XieNa', 'HJiong', 'Alice', 'Angelia', 'PGL', 'PeiQi', 'LXL', 'Dee-Dee', 'Ear']
>>> 

3. 列表方法,调用方法为 对象名.方法(参数) 。append方法为在列表末末位追加新的对象,直接修改原来的列表(这样做,可能会带来麻烦);count方法统计某个元素再列表中出现的次数;extend方法可以在列表的末位一次性追加另一个序列中的多个值,即可以用新列表扩展原有的列表,extend方法是在原有列表中修改,连接操作会创建一个新的结果副本返回,效率比extend低;

 1 >>> x = [[1,2],1,1,[2,1,[1,2]]]
 2 >>> x.count(1)
 3 2
 4 >>> a = [1,0,1,2,4]
 5 >>> x.extend(a)
 6 >>> x
 7 [[1, 2], 1, 1, [2, 1, [1, 2]], 1, 0, 1, 2, 4]
 8 >>> b = [4,5,6]
 9 >>> a+b
10 [1, 0, 1, 2, 4, 4, 5, 6]
11 >>> 

index方法用于从列表中找出某个值第一个匹配项的索引位置,这个词如果不在列表中,则会出错;insert方法在列表指定位置插入元素,如果指定位置超过列表长度,则默认在最后一个位置插入;pop方法移除列表中的一个元素,默认是最后一个,并返回被移除的元素。python没有push入栈方法,可以使用append方法代替;remove方法用于移除中某个值的第一个匹配项,匹配的粒度是元素级别的,而不是字节级别的,在列表原位置修改,但没有返回值;reverse方法将列表中的元素反向存放,改变了列表但不返回值;

 1 >>> knights = ['we', 'are', 'the', 'knights', 'eho', 'say', 'Hi']
 2 >>> knights.index('who')
 3
 4 Traceback (most recent call last):5   File "<pyshell#39>", line 1, in <module>6     knights.index('who')7 ValueError: 'who' is not in list
 8 >>> knights.index('are')
 9 1
10 >>> knights.insert(3, 'dark')
11 >>> knights
12 ['we', 'are', 'the', 'dark', 'knights', 'eho', 'say', 'Hi']
13 >>> knights.insert(100, 'eye')
14 >>> knights
15 ['we', 'are', 'the', 'dark', 'knights', 'eho', 'say', 'Hi', 'eye']
16 >>> knights.pop()
17 'eye'
18 >>> knights
19 ['we', 'are', 'the', 'dark', 'knights', 'eho', 'say', 'Hi']
20 >>> knights.pop(1)
21 'are'
22 >>> knights
23 ['we', 'the', 'dark', 'knights', 'eho', 'say', 'Hi']
24 >>> knights.remove('ar')
25
26 Traceback (most recent call last):
27   File "<pyshell#49>", line 1, in <module>
28     knights.remove('ar')
29 ValueError: list.remove(x): x not in list
30 >>> knights.remove('dar')
31
32 Traceback (most recent call last):
33   File "<pyshell#50>", line 1, in <module>
34     knights.remove('dar')
35 ValueError: list.remove(x): x not in list
36 >>> knights.remove('dark')
37 >>> knights.reverse()
38 >>> knights
39 ['Hi', 'say', 'eho', 'knights', 'the', 'we']
40 >>> knights.sort()
41 >>> knights
42 ['Hi', 'eho', 'knights', 'say', 'the', 'we']
43 >>> 

sort方法用于在原位置对列表进行排序,改变原来的列表。现在实现一个排序的功能,返回给用户一个排序好的列表副本,同时又保留原有列表。

1 >>> n = [3,7,1,9,3,7,4]
2 >>> y = n.sort() #sort方法没有返回值,所以y=None
3 >>> n
4 [1, 3, 3, 4, 7, 7, 9]
5 >>> y
6 >>> print y
7 None
8 >>> 

先复制x,再排序。赋值方法中,y=n实际上y和n指向同一个列表,所以对y做排序,n的列表值也就已经修改了。

1 >>> y = n
2 >>> y.sort()
3 >>> y
4 [1, 3, 3, 4, 7, 7, 9]
5 >>> n
6 [1, 3, 3, 4, 7, 7, 9]
7 >>> 

正确的操作姿势为将列表中的每个元素都复制给y。

1 >>> n = [3,7,1,9,3,7,4]
2 >>> y = n[:]
3 >>> y.sort()
4 >>> y
5 [1, 3, 3, 4, 7, 7, 9]
6 >>> n
7 [3, 7, 1, 9, 3, 7, 4]
8 >>> 

可以使用sorted函数获取已排序列表的副本。

1 >>> n
2 [3, 7, 1, 9, 3, 7, 4]
3 >>> z = sorted(n)
4 >>> z
5 [1, 3, 3, 4, 7, 7, 9]
6 >>> n
7 [3, 7, 1, 9, 3, 7, 4]
8 >>>

高级排序:为sort方法提供比较参数。sort的参数有cmp、key和reverse。

使用cmp作为参数:

1 >>> numbers = [5, 2, 9, 4]
2 >>> numbers.sort(cmp)
3 >>> numbers
4 [2, 4, 5, 9]

使用key作为参数:提供一个在排序过程中使用的函数,该函数并不是直接用来确定对象的大小,而是为每个元素创建一个键,然后所有元素根据键来排序。例如使用len作为键函数。

1 >>> x = ['aardvark', 'bulabula', 'acm', 'average', 'abalone', 'a']
2 >>> x.sort(key=len)
3 >>> x
4 ['a', 'acm', 'average', 'abalone', 'aardvark', 'bulabula']
5 >>> x = [4,6,4,3]
6 >>> x.sort(reverse = True)
7 >>> x
8 [6, 4, 4, 3]
9 >>> 

元组:不可变序列

字符串也是元组。创建元组的方法是用都好分割一些值。

1 >>> 1,2,3
2 (1, 2, 3)
3 >>> () #空元组
4 ()
5 >>> (42, ) #只有一个元素的元组
6 (42,)
7 >>> 

tuple函数,以一个序列作为参数并把它转换为元组: 1 >>> tuple([1,2,3]) 2结果 (1, 2, 3)

元组的意义:元组可以在映射(和集合的成员)中当做键使用--而列表则不行。元组作为很多内建函数和方法的返回值存在

转载于:https://www.cnblogs.com/mymindview/p/8371707.html

python基础笔记 - 列表和元组相关推荐

  1. Python基础数据类型---列表、元组、字典、集合、编码进价、数据类型转换

    文章目录 一.列表(List) 二.元组(tuple) 三.字典(dict) 四.集合(set) 五.数据类型间的转换 六.基础数据类型的总结 七.编码 八.练习题 一.列表(List) 列表是pyt ...

  2. python列表添加字符串_2.python基础之—列表,元组,字典,集合,字符串的使用方法...

    一.关于python序列的简介. python里面的序列大部分都可以执行,索引,切片,加,乘,检查长度,以及检查某个成员是否存在,甚至还可以找出这个序列中最小的元素和最大的元素,并且序列都是可迭代的. ...

  3. Python基础之列表和元组

    Python List 1.列表的创建 a = [1,2,3,'ryt'] b = [] a [1, 2, 3, 'ryt'] b [] a = list() a = list(range(10)) ...

  4. 04.Python基础_列表_元组_字典_集合

    文章目录 1.列表 1.1list 2.列表的索引和切片 练习1 提取数据 练习2 用索引取出下面list的指定元素: 3.修改列表的元素值 4.列表的常用方法 4.1append添加元素(与exte ...

  5. python基础知识-列表,元组,字典

    列表(list) 赋值方法: l = [11,45,67,34,89,23] l = list() 列表的方法: 1 #!/usr/bin/env python 2 3 class list(obje ...

  6. python学习笔记列表和元组(三)

    列表(list) 是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列表的内容. 对应操作: 1.查([]切 ...

  7. python元组读取到列表_Python 学习笔记(1)Python容器:列表、元组、字典与集合...

    Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list() ...

  8. Python 基础笔记

    Python 基础笔记 内置函数 print() 打印输出 type() 数据类型查询 isinstance() 判断数据是否是已知类型 input() 接受键盘输入 range() 函数 forma ...

  9. 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...

    本文内容主要介绍了Python字符串.列表.元组.字典.集合,结合实例形式详细分析了Python字符串.列表.元组.字典.集合常见函数使用方法及相关操作注意事项,需要的朋友可以参考下!!! 附加: p ...

最新文章

  1. python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...
  2. 一种以动态库的方式使用资源表的方案
  3. 【采用】规则引擎Pyke与PyClips对比研究报告(高大上啊,第一次听说pyke和pyclips这俩词~)
  4. Java中用户向系统传递参数的三种基本方式
  5. maven 遇到failOnMissingWebXml有关问题解决方法
  6. 【PhotoScan精品教程】任务三:生成密集点云、生成网格、生成DEM、生成DOM
  7. excel怎么设置打印区域_别再浪费打印纸了!这样设置,Excel表格再大都能打印成一页!...
  8. 具有Java 8支持的Spring Framework 4.0.3和Spring Data Redis 1.2.1
  9. Spring Data JPA 从入门到精通~AliDruidDataSource的配置
  10. 开源,自由,免费, 商业,收费,共享. 这些都不矛盾. 细数网络发展中的免费与收费....
  11. mysql 数字处理方法_mysql中保留字段中的数字的处理方法。
  12. php防丢包,记一次丢包网络故障
  13. hdu-1242 dfs+各种剪枝
  14. Nmap进行主机探测出现网段IP全部存活情况分析
  15. Git的简介及使用技巧 PPT
  16. 利用四阶龙格库塔法(Runge-Kutta methods)求解常微分方程并用其迭代式用MATLAB绘制分叉混沌图
  17. 【win10专业版】如何检测声卡是否损坏
  18. 多模态融合(三)MFAS: Multimodal Fusion Architecture Search
  19. 图片格式与设计那点事儿
  20. 前程似锦用计算机怎么表示,2021选什么专业 毕业后前程似锦

热门文章

  1. 路行助手使用教程_路行助手2.0
  2. 基于元胞自动机的森林火灾matlab模拟
  3. 【一建、一造经验分享】一建挺难的,要坚持才能得到
  4. Servlet相关练习题
  5. 黑莓为何放弃治疗 已无人可用
  6. ABAQUS纤维增强复合材料层合板分层和界面损伤与扩展分析-想学习ABAQUS复合材料建模分析,那就来这里!
  7. 互联网上还有适合普通人的红利项目吗?
  8. 本证方程的本征值 与 特征方程的特征值 的 区别 辨析
  9. EasyRecovery16中文最新版电脑数据恢复软件下载使用教程
  10. PasteSpider的下载和安装