Python列表与元组学习笔记
列表与元组都是一种序列。而列表与元组的不同点在于列表可修改而元组不可以。
索引
和C++的数组类似,Python里列表的索引从0开始。
#第一个例子
>>>G='stars'
>>> G[1]
't'
#第二个例子
>>>'hello'[0]
'h'
切片
获取列表中指定范围的元素
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[1:3]
[2,3]
#切片的值还可为负数
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[-3:-1] #负数表示倒数
[7,8]
#还可以省略
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[-3:] #省略后项
[7,8,9]
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[:3] #省略前项
[1,2,3]
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[:] #均省略
[1,2,3,4,5,6,7,8,9]
#实际上还可以超出索引
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[7:9]
[8,9]
注意:如果在使用切片时,第一个索引指定的元素位于了第二个指定元素的后方,则会返回一个空序列,即:[]
切片的步长
切片的步长默认为1,但我们也可以进行自定义设置
方法如下
>>>Num=[1,2,3,4,5,6,7,8,9]
>>>Num[0,6,2] #设置步长为2
[1,3,5]
想象一下步长设置为负数时会发生什么
成员资格
即检查特定的值是否包含在序列中
使用运算符in
示例如下
>>>chec=['hero','man','woman']
>>>'man' in chec
True
序列:长度,最值
三个函数:len,max,min
示例如下:
>>>num=[123,34,57,89]
>>>len(num)
4
>>>max(num)
123
>>>min(num)
34
列表
列表亦有加减乘
#加法
lst=['Hello','World']+['Python']
>>>['Hello','World','Python']
#乘法
lst=3*['python']
>>>['python','python','python']
函数list
创建列表的函数,示例如下:
>>>list('hello')
['h','e','l','l','o']
注:可将任何序列作为list的参数而不只局限于字符串。
列表的操作
列表的赋值
>>>num=[1,2,3]
>>>num[1]=6
>>>num
[1,6,3]
如何删除元素
使用del语句
>>>num=[1,2,3]
>>>del num[1]
>>>num
[1,3]
切片赋值
包含多种情况,如下所示
#情况1
>>>lang=['C','C#','Java','Html','PHP']
>>>lang[3:]=['Python','R']
>>>lang
['C', 'C#', 'Java','Python', 'R']
#情况2(长度改变)
>>>lang=['C','C#','Java','Html','PHP']
>>>lang[2:]=['Python','R','C++']
>>>lang
['C', 'C#', 'Python', 'R', 'C++']
#情况3(从中间插入)
>>> lang=['C','C#','Java','Html','PHP']
>>> lang[2:2]=['Python','R']
>>> lang
['C', 'C#', 'Python', 'R', 'Java', 'Html', 'PHP']
#情况4(替换为空)
>>> lang=['C','C#','Java','Html','PHP']
>>> lang[1:]=[]
>>> lang
['C']
列表的方法
append方法
用于将一个对象附加到列表末尾。
>>> lst = [1, 2, 3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
clear方法
清空列表的内容
>>>lst=[1,2,3]
>>>lst.clear()
>>>lst
[]
copy方法
复制列表.值得一提的是,常规复制只是将另一个名称关联到列表.如下所示:
#常规复制
>>>a=[1,2,3]
>>>b=a
>>>b[1]=9
>>>a
[1,9,3]
#copy方法
>>>a[1,2,3]
>>>b=a.copy()
>>>b[1]=9
>>>a
[1,2,3]
count方法
计算指定的元素在列表中出现了多少次
>>>name=['ag','eg','lg','ex','ag','lg','ag',[1,2]]
>>>name.count('ag')
3
>>>name.count([1,2])
1
extend方法
能够同时将多个值附加到列表末
>>>a=[1,2,3]
>>>b=[4,5,6]
>>>a.extend(b)
>>>a
[1,2,3,4,5,6]
index方法
在列表中查找指定值第一次出现的索引
>>>name=['a','b','c','a']
>>>name.index(a)
0
insert方法
将一个对象插入列表
>>>num=[1,2,3,4]
>>>num.insert(2,'a')
>>>num
[1,2,'a',3,4]
pop方法
从列表中删除一个元素(末尾为后一个元素),并返回这一元素。
>>>num=[1,2,3]
>>>num.pop()
3
>>>num
[1,2]
remove方法
用于删除第一个为指定值的元素。
>>>num=[1,2,3,1]
>>>num.remove(1)
>>>num
[2,3,1]
reverse方法
按相反的顺序排列列表中的元素
>>>num=[1,2,3]
>>>num.reverse()
>>>num
[3,2,1]
sort方法
对列表就地排序。就地排序意味着对原来的列表进行修改
>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]
#以下为错误示范
>>> x = [4, 6, 2, 1, 7, 9]
>>> y=x.sort()
>>> y
None
#改正为
>>> x = [4, 6, 2, 1, 7, 9]
>>>y=sorted(x)
>>> x
[4,6,2,1,7,9]
>>>y
[1,2,4,6,7,9]
sort高级排序
方法sort接受两个可选参数:key和reverse。这两个参数通常是按名称指定的,称为关键字 参数,将在第6章详细讨论。参数key类似于参数cmp:你将其设置为一个用于排序的函数。然而, 不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每个元素创建一个 键,再根据这些键对元素进行排序。因此,要根据长度对元素进行排序,可将参数key设置为函数len。
>>>x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
>>>x.sort(key=len)
>>>x
['add', 'acme', 'aerate', 'abalone', 'aardvark']
对于另一个关键字参数reverse,只需将其指定为一个真值(True或False,将在第5章详细介 绍),以指出是否要按相反的顺序对列表进行排序。
x = [4, 6, 2, 1, 7, 9]
x.sort(reverse=True)
x
[9, 7, 6, 4, 2, 1]
函数sorted也接受参数key和reverse。在很多情况下,将参数key设置为一个自定义函数很有用。
元组
创建方式
>>>1,2,3
(1,2,3) #此即为元组
>>>()
()
>>>100, #逗号不可省略
(100)
元组的用法
元组的用法与列表大致相同