Python学习笔记(3)——列表的索引、切片、增删改和排序

列表是由一系列按顺序排列的元素组成,列表的元素可以是字母、数字或任何东西,它们之间没有关系,用方括号([ ])表示列表。

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

1. 索引从0开始

与大多数编程语言一样,列表的索引从0开始,而且还提供从右往左数。

>>> numbers[0]
1
>>> numbers[9]
10
>>> numbers[-1]
10
>>> numbers[-2]
9

2. 用切片访问多个元素

可以指定两个索引为切片的边界,访问列表中的一段,需要注意的是第二个索引指定的元素不含在切片内。

>>> numbers[0:5]
[1, 2, 3, 4, 5]
>>> numbers[-3:-1]  # 不包含最后的元素
[8, 9]
>>> numbers[-3:]  # 这样可以包含最后一个元素
[8, 9, 10]
>>> numbers[:5]  # 从头开始可以省略第一个索引
[1, 2, 3, 4, 5]
>>> numbers[:]  # 两个索引都省略就是访问所有元素
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[2:1]  # 如果第二个索引比第一个小,返回空
[]

加上步长,就可以跳着访问元素了,默认步长是1。

>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[0:10:3]
[1, 4, 7, 10]
>>> numbers[10:0:-2]  # 步长为负数时,可以倒着访问
[10, 8, 6, 4, 2]

3. 使用加法和乘法

加法运算可用来拼接序列;乘法运算可用来创建一个重复n次的新列表。

>>> numbers + [11,12,13]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> newNumbers = numbers * 2
>>> newNumbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4. in、len、min、max、sum

检查一个值是否包含在列表中可以用运算符in;

内置函数len、min、max、sum用于返回列表的长度、最小值、最大值和总和;

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> 2 in numbers
True
>>> 'aa' in numbers
False

>>> len(numbers)
10
>>> min(numbers)
1
>>> max(numbers)
10
>>> max(['a','b'])
'b'
>>> sum(numbers)
55

5. 利用索引和切片操作列表

利用索引可以直接修改或删除列表的元素。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0] = -1
>>> numbers
[-1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> del numbers[0]
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

也可以利用切片修改多个元素,甚至可以巧妙的插入或删除元素。

>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:3] = [0,0,0]  # 把前3个元素改成0
>>> numbers
[0, 0, 0, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:3] = []  # 把前3个元素删掉
>>> numbers
[4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:0] = [1,2,3]  # 在索引0出再插入1,2,3
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> del numbers[:3]  # 也可以用del删除元素
>>> numbers
[4, 5, 6, 7, 8, 9, 10]

6. 列表常用方法

  • append、extend、insert

append方法用于将一个对象追加到列表末尾;

extend方法可以将多个值追加到末尾;

insert方法可以在指定位置插入元素。

>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.extend([5, 6, 7])
>>> a
[1, 2, 3, 4, 5, 6, 7]
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a.insert(3, 3.5)
>>> a
[1, 2, 3, 3.5, 4, 5, 6, 7]
  • pop、remove、clear

pop方法从列表中删除一个元素(默认为最后一个元素),并返回被删除的元素; 

remove方法的参数是一个指定值,用于删除列表中第一个该指定值的元素;

clear方法清空列表。

>>> a = [1, 2, 3]
>>> a.pop()
3
>>> a
[1, 2]
>>> a.pop(0)
1
>>> a
[2]
>>> b = [1, 2, 3, 3, 2, 1]
>>> b.remove(2)
>>> b
[1, 3, 3, 2, 1]
>>> b.clear()
>>> b
[]
  • count、index

count方法用于计算指定元素在列表中出现的次数;

index方法用于查找指定值第一次出现的位置,找不到的话就会报错。

>>> a = [1, 2, 3] * 2
>>> a
[1, 2, 3, 1, 2, 3]
>>> a.count(1)
2
>>> a.index(3)
2

  • copy

copy方法可以复制列表,也可以说是创建一个副本,也可以用a[:]或list(a)的方式来复制a,但b=a却不能复制a,而是将另一个名称关联到li列表。

>>> a = [1, 2, 3]
>>> b = a  # a和b指向同一个列表
>>> b[0] = -1
>>> a
[-1, 2, 3]
>>> 
>>> a = [1, 2, 3]
>>> # 使用copy方法创建一个副本
>>> b = a.copy()
>>> b[0] = -1
>>> b
[-1, 2, 3]
>>> a
[1, 2, 3]
>>> # 使用a[:]创建一个副本
>>> c = a[:]
>>> c[0] = -1
>>> c
[-1, 2, 3]
>>> a
[1, 2, 3]
>>> # 使用list(a)创建一个副本
>>> d = list(a)
>>> d[0] = -1
>>> d
[-1, 2, 3]
>>> a
[1, 2, 3]
  • reverse、sort、sorted

reverse方法将列表逆序排列,直接修改原列表,但不返回值;

sort方法对列表中的元素按顺序排序,同样是xiug修改原列表,不返回值;

sorted方法对列表排序并返回一个排序后的副本,不修改原列表。

>>> a = [1 ,5, 2, 9, 8, 10]
>>> a.reverse()
>>> a
[10, 8, 9, 2, 5, 1]
>>> a = [1 ,5, 2, 9, 8, 10]
>>> a.sort()
>>> a
[1, 2, 5, 8, 9, 10]
>>> a = [1 ,5, 2, 9, 8, 10]
>>> b = sorted(a)
>>> b
[1, 2, 5, 8, 9, 10]
>>> a
[1, 5, 2, 9, 8, 10]

sort方法有两个可选参数:key和reverse。参数key的值可以是一个用于排序的函数(可以是自定义函数),该函数为每个元素创建一个键,在根据这些键值来排序。reverse默认值为False,设为True时则逆序排列。

>>> a = ['hello', 'python', 'a', 'no']
>>> a.sort(key=len)
>>> a
['a', 'no', 'hello', 'python']
>>> a.sort(key=len, reverse=True)
>>> a
['python', 'hello', 'no', 'a']

7. 元组

如果想创建一系列不可修改的元素,可以使用元组。定义一个元组的方式是用逗号分隔元素,也可以用圆括号括起来。使用tuple方法可将列表转换为元组。

>>> a = 1,2,3
>>> a
(1, 2, 3)
>>> b = (1,2,3)
>>> b
(1, 2, 3)
>>> c = 1,  # 创建只含一个元素的元组,必须有逗号
>>> c
(1,)
>>> d = tuple([3,2,1])
>>> d
(3, 2, 1)

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值