python基础笔记 - 列表和元组
序列中的每个元素都有自己的编号,有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基础笔记 - 列表和元组相关推荐
- Python基础数据类型---列表、元组、字典、集合、编码进价、数据类型转换
文章目录 一.列表(List) 二.元组(tuple) 三.字典(dict) 四.集合(set) 五.数据类型间的转换 六.基础数据类型的总结 七.编码 八.练习题 一.列表(List) 列表是pyt ...
- python列表添加字符串_2.python基础之—列表,元组,字典,集合,字符串的使用方法...
一.关于python序列的简介. python里面的序列大部分都可以执行,索引,切片,加,乘,检查长度,以及检查某个成员是否存在,甚至还可以找出这个序列中最小的元素和最大的元素,并且序列都是可迭代的. ...
- Python基础之列表和元组
Python List 1.列表的创建 a = [1,2,3,'ryt'] b = [] a [1, 2, 3, 'ryt'] b [] a = list() a = list(range(10)) ...
- 04.Python基础_列表_元组_字典_集合
文章目录 1.列表 1.1list 2.列表的索引和切片 练习1 提取数据 练习2 用索引取出下面list的指定元素: 3.修改列表的元素值 4.列表的常用方法 4.1append添加元素(与exte ...
- python基础知识-列表,元组,字典
列表(list) 赋值方法: l = [11,45,67,34,89,23] l = list() 列表的方法: 1 #!/usr/bin/env python 2 3 class list(obje ...
- python学习笔记列表和元组(三)
列表(list) 是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列表的内容. 对应操作: 1.查([]切 ...
- python元组读取到列表_Python 学习笔记(1)Python容器:列表、元组、字典与集合...
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list() ...
- Python 基础笔记
Python 基础笔记 内置函数 print() 打印输出 type() 数据类型查询 isinstance() 判断数据是否是已知类型 input() 接受键盘输入 range() 函数 forma ...
- 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...
本文内容主要介绍了Python字符串.列表.元组.字典.集合,结合实例形式详细分析了Python字符串.列表.元组.字典.集合常见函数使用方法及相关操作注意事项,需要的朋友可以参考下!!! 附加: p ...
最新文章
- python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...
- 一种以动态库的方式使用资源表的方案
- 【采用】规则引擎Pyke与PyClips对比研究报告(高大上啊,第一次听说pyke和pyclips这俩词~)
- Java中用户向系统传递参数的三种基本方式
- maven 遇到failOnMissingWebXml有关问题解决方法
- 【PhotoScan精品教程】任务三:生成密集点云、生成网格、生成DEM、生成DOM
- excel怎么设置打印区域_别再浪费打印纸了!这样设置,Excel表格再大都能打印成一页!...
- 具有Java 8支持的Spring Framework 4.0.3和Spring Data Redis 1.2.1
- Spring Data JPA 从入门到精通~AliDruidDataSource的配置
- 开源,自由,免费, 商业,收费,共享. 这些都不矛盾. 细数网络发展中的免费与收费....
- mysql 数字处理方法_mysql中保留字段中的数字的处理方法。
- php防丢包,记一次丢包网络故障
- hdu-1242 dfs+各种剪枝
- Nmap进行主机探测出现网段IP全部存活情况分析
- Git的简介及使用技巧 PPT
- 利用四阶龙格库塔法(Runge-Kutta methods)求解常微分方程并用其迭代式用MATLAB绘制分叉混沌图
- 【win10专业版】如何检测声卡是否损坏
- 多模态融合(三)MFAS: Multimodal Fusion Architecture Search
- 图片格式与设计那点事儿
- 前程似锦用计算机怎么表示,2021选什么专业 毕业后前程似锦