Python 中列表和元组两种序列结构介绍及相关操作
Python里除字符串外 还有另外两种序列 即列表和元组 它们都能包含零个或多个元素 且不要求所含元素类型相同 每个元素都可是任何Python类型对象

为何Python要设计列表与元组这两种序列结构呢?原因在于元组类似字符串是不可变的。当给元组赋值时,这些值会固定在元组中无法修改。列表则灵活可变,能随意插入或删除元素,结构更灵活,用处更强大。
一:列表创建
使用[ ]或者list[ ]创建列表
number=[1,2,3]
s 等于列表 ['lily', 'jude']
这是一个混合列表
还可以创建一个空的列表
使用list函数创建 列出“jude”
二:列表操作
2.1,通过索引获取元素,索引值从0开始
name=['lucy','lily',['china','usa'],'007','anna','mei']可改写为:name 包含 'lucy',包含 'lily',包含 ['china', 'usa'],包含 '007',包含 'anna',包含'mei'
name[0] >>> 'lucy'
name[1] >>> 'lily'
获取最后一个元素,依次类推,name[-1]的值为'mei'
name[2][1]的值为'usa' #针对嵌套的列表结构 可多次通过索引获取
2.2,列表分片获取
要通过列表分片的方式来实现
其基本形式为:列表名[左索引值:右索引值]。左右索引值均可省略。
左索引值省略时表明。列表元素从0开始。右索引值省略表示。包含左索引值右边的所有元素。
注意:分片其实是创建原列表的一个拷贝
成员 = ['php', 'python', 'java','sql']
member从索引1到索引3(不包括索引3)的切片结果是['python', 'java'],member本身的元素并未改变,这相当于生成了一个新列表,该新列表包含原列表中索引为1和2的元素
member[:3]得到['php', 'python', 'java'],这表示从第0个索引值开始
成员从索引值1开始 >>> ['python', 'java','sql'] # 意思是获取从左索引值1起至列表右边的所有元素
成员列表:>>>['php', 'python', 'java','sql'] #这等同于复制了一份原来的列表
分片操作能够接收第三个参数。此参数即步长。其格式如下:[start:end:step]
step在不指定时默认为1
numb=[1,2,3,4,5,6]
numb[0:6:2] >>>[1,3,5]
numb[::2] >>>[1,3,5]
numb[::-1] 会生成 [6,5,4,3,2,1] 这相当于复制一个反转的列表
2.3,列表复制
三种方法都可以将一个列表的值复制到一个新的列表
list1 = [123,456]
list2 = list1.copy()
则list2的值变为[123,456]。它的功能与列表分片功能相同。list2 = list1[:]起到的作用是一样的。
他们两个和赋值运算符=不一样 前者会在内存里重新申请一块空间 用来存放列表的值
=则是将列表的地址直接赋值给了另一个列表,
举例说明两者带来的区别:
list1 = [1,3,5]
list2 =list1
list3 = list1.copy()
list1添加'python'
列表 list2 包含元素 'python'
list3 >> [1,3,5]
2.4,列表排序
经常需要将列表按元素值进行排序,python提供了两个函数
若列表里的元素全是数字,会默认按从小到大的升序进行安装。若元素全是字符串,会依照字母表顺序排列。
进阶用法:
sort(func,key,reverse)中,func用于设置排序算法,key用于设置关键字。
reverse=False时代表正序排列。为True的话则颠倒顺序。默认状态是正序排列
a=[1,5,3,99,6]
a.sort()
a >> [1,3,5,6,99]
原列表保持不变
>> [1,3,5,6,99]
2.5,添加元素
列表中的元素还有lily
#append函数将元素添加到列表末尾
number.append('007') 无法改写,因为禁止穿插英文单词,且这句话本身除了英文单词外没有其他可改写的内容。
包含“lucy”“lily”“007”
#extend函数将列表添加到列表的末尾
将 ['anna', 'mei'] 添加到 number 中 # 这等价于 number += ['anna','mei']
包含lucy、lily、007、anna、mei
#insert()方法
将 'ken' 插入到 number 的开头位置
包含“肯”“露西”“莉莉”“007”“安娜”“梅”
**连接操作符,两个列表直接相加可以得到合并之后的新列表
a,b=[1,2],[3,4]
>>> a+b
[1,2,3,4]
>>> a*2
[1,2,1,2]
2.6 删除列表元素
还有梅
name移除'lucy'
包含“mei”
>>> del name[1]
包含“lily”“anna”“mei”
>>> name.pop()
'mei'
>>> name
莉莉,安娜
>>> name.pop(1)
'anna'
>>> name
['lily']
list1 = [1,1,2,3,4]
>>> list1.clear()
>>> list1
[]
2.7,使用in判断值是否存在
判断列表中是否存在该元素,存在返回True
name=['lucy','lily','007','anna','mei']
>>> '007' in name
True
2.8,使用join()转换为字符串
注意:join()实际上是字符串的方法并非列表的方法,不能借助suit.join()来调用。
join() 是字符串分割split()的逆过程
suit包含三个元素,分别是apply,orange,peer
>>> '# '.join(suit)
'apply# orange# peer'
2.9,元素计数
使用count()可以计算某一个特定元素在列表中出现的次数
#count计算参数在列表中出现的次数
list1.count(1) >>> 2
2.10,获取列表长度及列表反转
list1=[1,2,3,1,4]
#计算元素个数
>>> len(list1)
5
#列表反转
>>> list1.reverse()
>>> list1
[4, 1, 3, 2, 1]