Python学习笔记3_列表和元组
2015-07-01 11:20
639 查看
Python的数据结构
序列是python中最基本的数据结构,共六种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、和xrange对象。还有一种数据结构叫映射,如字典容器(python的数据结构) --序列 --列表 --元组 --字符串 -- Unicode字符串 --buffer对象 --xrange对象 --映射 --对象 --集合
列表可以修改,元组不可修改
1.通用序列操作
1.1 序列的访问方式:索引访问和分片访问
#序列 week = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"] #使用索引访问元素,可以从前往后(从0开始),也可以从后往前(从-1开始) print("周三是:"+week[2]) print("周日是:"+week[-1]) #分片访问,用冒号分割,与java的String对象的subString方法异曲同工。 print("周三到周六分别为:"+str(week[2:5])) #特别的访问方式 print("一周前三天为:"+str(week[:3])) print("一周后三天为:"+str(week[-3:])) #显示设置分片访问的步长(默认为步长为1,即直接取下一个数) print("步长为2的分片访问:"+str(week[::2]))
执行结果如下:
周三是:Wednesday 周日是:Sunday 周三到周六分别为:['Wednesday', 'Thursday', 'Friday'] 一周前三天为:['Monday', 'Tuesday', 'Wednesday'] 一周后三天为:['Friday', 'Saturday', 'Sunday'] 步长为2的分片访问:['Monday', 'Wednesday', 'Friday', 'Sunday']
1.2 序列的运算:序列相加、乘法【一个数字乘以序列】
seq1 = [1,2,3] seq2 = [4,5,6] #序列相加(可以理解为序列的有序合并) seq3 = seq1 + seq2 #序列的乘法(可以理解为序列的n次合并) seq4 = seq1 * 3 print(seq3) print(seq4)
运行结果:
[1, 2, 3, 4, 5, 6] [1, 2, 3, 1, 2, 3, 1, 2, 3]
Python的内建值None,代表空值.n个元素的序列可以这样定义:seq = [None] * n。
1.3 成员资格
成员资格使用in运算,即判断某元素是否在序列中#资格运算 permissions = 'rw' print('r' in permissions) print('rw' in permissions) print('x' in permissions) print('wr' in permissions) print('-----------------') nums = [1,2,3,4] nums2 = [1,2] nums3 = [1,3] nums4 = [3] print(nums2 in nums) print(nums3 in nums) print(nums4 in nums)
运行结果:
True True False False ----------------- False False False
1.4 长度、最小值、最大值
可以使用对应的内建函数len、min、max进行运算print(len(nums)) print(min(nums)) print(max(nums)) print(max(4,2,5)) print(min(4,2,5))
运行结果:
5 1 8 5 2
max和min函数可以以序列为参数,也可以多个数字做参数
2.列表【可变序列】操作
2.1 list函数【用于把序列转换成可修改的列表】
#列表操作######### name = "LeonWang" #把序列转换成列表 nameSeq = list(name) print(nameSeq)
运行结果:
['L', 'e', 'o', 'n', 'W', 'a', 'n', 'g']
这个函数适用于所有类型的序列。
2.2 基本列表操作
name = "LeonWang" nameSeq = list(name) print(nameSeq) #赋值操作 nameSeq[3] = 'm' print(nameSeq) #删除元素 del nameSeq[3] print(nameSeq) #分片赋值 nameSeq[4:5] = list('Li') print(nameSeq)
运行结果:
['L', 'e', 'o', 'n', 'W', 'a', 'n', 'g'] ['L', 'e', 'o', 'm', 'W', 'a', 'n', 'g'] ['L', 'e', 'o', 'W', 'a', 'n', 'g'] ['L', 'e', 'o', 'W', 'L', 'i', 'n', 'g']
分片赋值时赋值列表的元素个数不一定要跟分片个数一致,可以在分片位置插入少于或者多于分片元素个数。也可以通过分片赋空值的方法达到删除元素的效果
2.3 列表方法
Method | Common |
---|---|
append | 在列表末尾追加新的对象(字符,字符串,数字,列表等等) |
count | 统计某个元素在列表中出现的次数 |
extend | 在列表的末尾一次性追加另一个序列中的多个值(用新列表扩展原列表) |
index | 用于找出某个元素第一个匹配位置 |
insert | 用于将对象插入到列表中 |
pop | 移除列表中的一个元素(默认最后一个)并返回该值 |
remove | 移除列表中某个值的第一个匹配项目 |
reverse | 将列表中的元素方向存放 |
sort | 用于在原位置对列表进行排序 |
高级排序 |
#列表方法 words = ["I","LOVE","YOU",",","CHINA","!"] print("原列表:"+str(words)) words.append("^_^") print("列表末尾追加后:"+str(words)) print("统计YOU出现的次数:"+str(words.count("YOU"))+",YO出现的次数:"+str(words.count("YO"))) anowords = ["THAT'S","TRUE"] words.extend(anowords) print("用列表anowords扩展列表words后:"+str(words))
运行结果:
原列表:['I', 'LOVE', 'YOU', ',', 'CHINA', '!'] 列表末尾追加后:['I', 'LOVE', 'YOU', ',', 'CHINA', '!', '^_^'] 统计YOU出现的次数:1,YO出现的次数:0 用列表anowords扩展列表words后:['I', 'LOVE', 'YOU', ',', 'CHINA', '!', '^_^', "THAT'S", 'TRUE']
这些方法都是通过列表对象进行调用,类似于java的方法调用,使用非常简单,不全部列举,不过有几点需要注意:
extend与连接操作(+)看似一样,其实不然,extend是修改了被扩展的序列,而连接操作返回全新的列表。
list方法使用时,若找到匹配元素则返回其所在索引位置,否则异常
pop与remove的区别:pop有返回值,参数可有可无,删除的是某索引位置的值,remove无返回值,需要参数,删除的是某元素第一次出现的位置,当元素不存在时异常。
sort方法没有返回值,切记。
高级排序是通过编写比较函数compare,实现元素的比较规则,然后调用列表的sort方法,将比较函数名作为参数传递进去.这种方式也类似于java.
3. 元组【不可变序列】
元组的初始化使用逗号分割了某些值,即创建了元组。元组一般是以()表示括起来的。若要创建一个元素的元组也需要用在元素后面加逗号,否则不为元组。
#元组初始化 students = "Leon","Lucy","Lily" print(students) student = ("Leon",) print(student)
运行结果:
('Leon', 'Lucy', 'Lily') ('Leon',)
tuple函数,类似于list函数,只是转换目标不同,list用于转成列表,而tuple用于转换成元组。如果参数本身就是元组,则参数被原样返回。
#tuple函数 name = "Leon" namechars = tuple(name) print(namechars)
运行结果:
('Leon',) ('L', 'e', 'o', 'n')
元组基本操作:基本就是创建和访问,访问方式同于其他序列。
相关文章推荐
- 用高阶函数做抽象
- python选择排序算法实例总结
- Python 基础教程
- python实现的希尔排序算法实例
- python获取一组汉字拼音首字母的方法
- Python单元测试
- Python执行系统命令的方法 os.system(),os.popen(),commands
- python 中的Array,Value及内存共享
- Python 多线程 Condition 的使用
- 使用python的列表解析以及函数式计算来简化代码
- python mysql MySQLdb
- Python模块如何安装 并确认模块已经安装好?
- python-random模块
- python 发送post和get请求
- [python]对self和_init_的理解
- python中web框架
- 利用pyexe封装py脚本文件
- python中的Lock
- python处理excel的第三方库
- python 中的pipe