Python列表和元组-学习笔记(持续更新)
目录
- 更多分享:http://www.catbro.cn
注意事项(Python内建了6种序列,列表和元组为其中常用的两种)
- 列表可修改,元组不可修改
- 几乎所有情况下都可以用列表来代替元组
- 在创建字典时,key的存储之所以使用元组而不使用列表,是因为列表可修改,元组不可修改
创建形式
- 列表里可存储任意类型的值 1、lis = [‘value1’,‘value2’,value3]
- 序列可以包含序列 2、list = [‘value1’,[value2,‘value3’]]
序列的通用操作
-
所有的序列类型都可以进行某些特定的操作
-
1、索引-indexing 序列中的所有元素都是有编号的(从0开始递增),也就是我们的索引号,可以通过编号进行访问
如:str = "hello" 获取`o`:str[4] 我们也可以倒着获取:str[-1]
-
2、分片-sliceing 分片就是提取序列的一部分,跟通过索引号访问字符串中的某个字符类型,我们这里是获取某个范围的字符串
如:str="hello" 获取`ll`,当然你可以这样:str[2]+str[3]或者str[-3]+str[-2] 分片获取:str[2:4],也就是从索引号2开始取,一直取到索引号为4之前的元素 也可以倒着来哦:str[-3:-1],注意取的顺序还是要从左到右哦 如果要取`llo`:str[2:5] 如果一直取到末尾,我们也可以这样哦:str[2:]、str[-3:] 如果取整个序列:str[:],没错,都用空的就可以了哦 总结:用数学开闭区间来理解 [oneIndex:twoIndex)
-
分片除了设置起始和终止索引号外,我们还可以设置步长哦,其实之前也是有步长的,默认的步长为1
同样,我们取str=“hello”重的ll:str[2:4:1] 我要取e和o呢? 当然你可以这样str[1]+str[4]或者str[-4]+str[-1] 但是我们同样可以用分片:str[1::2],也就是取一个元素后隔两个再取
-
3、序列相加-adding Python中的序列可以用
+
直接相加哦,但是要注意,类型必须要一致哦lst1 = [1,2,3]; lst2 = [4,5,6]; lst3 = lst1 + lst2; 那么lst此时为[1,2,3,4,5,6]
-
4、序列相乘-multiplying Python中用:新的序列 = 数字*序列
lst1 = [1]; lst2 = lst1*5; lst2:[1,1,1,1,1];
-
5、检查某个元素是否属于序列 Python中判断某个值是否在序列中很简单,使用
in
运算法即可解决。返回的是boolean值,true为存在。false不存在 -
6、计算序列长度
-
7、找出最大最小元素
列表:可变序列
- 1、list函数 list函数适用于所有类型的序列 字符串是不可变的,但是我们可以用字符串来创建字符串列表,这样就可以使用列表的可变能力来实现我们的目的了:lst = list(“hello”) lst为[‘h’,’e’,’l’,’l’,‘o’];
列表的基本操作
-
1、元素赋值
lst=[1,2,3]; lst[1] = 4; lst : [1,4,3] 注:不能给不存在的位置赋值,如lst[3]=5就会报错了
-
2、删除元素 删除元素我们使用del语句实现
lst=[1,2,3]; del lst[1]; lst: [1,3]
-
3、分片赋值 我们之前讲了分片读值,我们也可以分片赋值哦
str = list("hello"); str[2::2]=list('xx'); str : ['h', 'e', 'x', 'l', 'x'] 分片赋值如果插入的位置不存在,会创建新的值,但是步长必须为1哦
列表的方法
-
1、append:在列表末尾添加新的对象
lst = [1,2]; lst.append(3); lst :[1,2,3]
-
2、count:统计某个元素在列表中出现的次数
lst = [1,1,[1,2],3]; ct = lst.count(1); ct:2
-
3、extend:在列表末尾追加另一个列表的值
lst1 = [1,2]; lst2 = [3,4]; lst1.extend(lst2); lst1 : [1,2,3,4] lst2 : [3,4] 用+号也可以,但是并不是在原来列表追加, 而是产生新的列表 lst1 = [1,2]; lst2 = [3,4]; lst3 = lst1+lst2; lst1 :[1,2] lst2 :[3,4] lst3 :[1,2,3,4]
-
4、index:从列表中找出某个值第一个匹配项的索引位置
lst = ['h','e','l','l','o',',','h','i'] ix = lst.index('h'); ix : 1
-
5、insert:将对象插入列表中,插入的对象可以是不同类型
lst = [1,2,3]; lst.insert(1,'hello'); lst : [1,'hello',2,3] 使用分片来实现,可读性不好: lst = [1,2,3]; lst[1:1]=['hello']; lst : [1,'hello',2,3]
-
6、pop:移除列表中的一个元素,默认是最后一个(pop方法是唯一一个既能返回元素值又能改变列表的方法)
lst = [1,2,3]; v = lst.pop(); v : 3 lst : [1,2] 当然也可以移除指定的 lst = [1,2,3]; v = lst.pop(0); v : 1 lst : [2,3]
-
7、remove:移除列表中某个值的第一个匹配项
lst=[1,3,[1,2],3]; lst.remove(3); lst : [1,[1,2],3]
-
8、reverse:将列表元素反转
lst = [1,2,3]; lst.reverse(); lst : [3,2,1]
-
9、sort:在原列表中对数据进行排序,不会产生副本
lst = [3,1,2]; lst.sort(); lst : [1,2,3]
-
10、sorted(object):生成一份新的列表副本,对副本进行排序,返回值为创建的副本
lst1 = [3,1,2]; lst2 = sorted(lst1); lst1 : [3,1,2] lst2 : [1,2,3] 另类实现 lst1 = [3,1,2]; lst2 = lst1[:]; lst1 : [3,1,2] lst2 : [1,2,3]
-
11、高级排序
key
,reverse
, -
reverse使用:
-
lst = ['1','3','2']; lst.sort(reverse=False); lst : ['1', '2', '3'] lst = ['1','3','2']; lst.sort(reverse=True) ['3', '2', '1']
-
key使用 :
lst = [3,1,2]; lst.sort(key=lambda x:(x)); [1, 2, 3] lst = [3,1,2]; lst.sort(key=lambda x:(-x)); [3, 2, 1]
元组:不可变序列
- 创建形式1:用(.)。注意,最后要加多一个.
- 创建形式2:tuple()
- 元组操作比较简单,记住其是不可变的