目录

Python列表和元组-学习笔记(持续更新)

注意事项(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()
  • 元组操作比较简单,记住其是不可变的