Python数据结构之【列表】

Python有四种数据结构,分别是列表,元组,集合和字典,这里先说字典。


python的列表和java的一维数组有点类似,不过列表可以存储不同数据类型的元素,包括四种数据结构。

列表的一些常见操作

访问元素

列表使用索引index来进行元素的访问,这点和java的数组相似。

  • 访问单一的元素时,使用 list[i] 来访问元素,i 表示访问的元素的下标。
  • 访问连续的元素时,也叫切片,常用 list[start : end : step] 来访问,不包含end所在的元素,step 为负数时表示从末尾开始读,list[: : -1] 常用来表示将列表反转。
  • 访问元素时,列表本身不会发生变化。

添加元素

列表在修改元素时,都是在列表本身上进行修改,包括添加元素、删除元素和修改元素。

列表添加元素的操作有append, extend 和Insert,都没有返回值,使用的时候各有区别,具体例子如下:

  • list.append(data)  在列表末尾存放指定的元素
  • a = [1,2,3,4]
    b = ['a','b']
    a.append(b)
    print(a)  #[1,2,3,4,['a','b']]
  • list.extend(iterable) 可以看作是对列表的扩展或者拼接,extend后只能放入可迭代的对象,也就是list,tuple,set,dict 和 string。
  • a = [1,2,3,4]
    b = ['a','b','c']
    a.extend(b)
    print(a)  #[1,2,3,4,'a','b','c']
  • list.insert(index,data) 在某个位置插入数据
  • a = [1,2,3,4]
    b = ('a',3,'b')
    a.insert(0,b)
    print(a)  #[('a',3,'b'),1,2,3,4]
  • 列表的切片也可以实现append和extend
  • a = [1,2,3,4]
    
    #append
    a[len(a):] = 5
    print(a)  # [1,2,3,4,5]
    
    #extend
    a[len(a):] = [6,7,8]
    print(a)  # [1,2,3,4,5,6,7,8]
    

 删除元素

删除元素同样是在列表本身上进行修改,所以没有返回值,pop()方法虽然有返回值,返回的却是删除的元素。

  • list.remove( data ) 按值删除,删去列表中第一次出现的元素,当元素不存在,会返回ValueError,所以在删除前最好检查元素是否存在。
  • a = [1,2,3,5,3,4]
    b = a.remove(3)
    print(a)  # [1,2,5,3,4]
    print(b)  # None
  • list.pop() 删去列表最后一个元素 (类似于java中的栈),返回删除的元素。
  • list.pop(index) 按索引删除,删去列表索引index所在位置的元素,同样返回删除的元素
  • a = [1,2,3,5,3,4]
    b = a.pop()
    print(a)  # [1,2,3,5,3]
    print(b)  # 4
    
    c = a.pop(1)
    print(a)  # [1,3,5,3]
    print(c)  # 2
    
  • del list 删除整个列表
  • del list[index] 按索引删除,但是没有返回值。而且del list[index]比pop(index) 更加灵活,可以用于删除某一索引范围的元素,同样的,右区间取不到。
  • a = [1,2,3,5,3,4]
    del a[0:3]
    print(a)  # [5,3,4]

 修改元素

列表用索引进行修改,指定单个下标或者某个索引区间进行修改。

a = ['water','bottle','apple']
a[1] = 'melon'
print(a) # ['water','melon','apple']
  • 单个下标修改:
  • 下标区间进行修改:

    • 当区间范围大于要修改的元素个数时,在区间范围内修改对应元素,多出来的部分将后面的元素往前移动。

    • a = ['water','bottle','apple','fruit','vege']
      a[1:3] = ['melon']
      print(a) # ['water', 'melon', 'fruit', 'vege']
    • 当区间范围小于要插入的元素个数时,强行插入。

    • a = ['water','bottle','apple','fruit','vege']
      a[1:3] = ['melon','peach','pear']
      print(a) # ['water', 'melon', 'peach', 'pear', 'fruit', 'vege']

列表排序

列表排序分成逆序和正序。

  • list.sort(reverse = False) 列表的内置函数,直接修改列表,默认从小到大顺序排列。
  • sorted(literable) 返回一个排好序的列表,可以对所有迭代器进行排序。迭代器本身不变。

反转列表

  • list [ : :-1]
  • list.reverse() 直接修改列表
  • reversed(literable) 返回一个迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值