Python数据类型——列表(list)

目录

1 概述

2 基本操作 

2.1 index

2.2 count

2.3 append

2.4 extend

2.5 insert

2.6 pop

2.7 remove

2.8 reverse

2.9 sort

3 sort 

3.1 sort 方法

3.2 sorted 方法

3.3 降序排序

3.4 key 关键字方法

3.5 多列(属性)排序


1 概述

在前面,我们已经对Python学习做了系统的知识梳理( Python思维导图)。
字符串和元组是不可变的,而列表是可变( mutable )的,可以对它进行随意修改。我们还可以将字符串和元组转换成一个列表,只需使用 list 函数,比如:
>>> s = 'hello' 
>>> list(s) 
['h', 'e', 'l', 'l', 'o'] 
>>> a = (1, 2, 3) 
>>> list(a) 
[1, 2, 3]

 

上节课我们讲解了序列,这节课分享另一个Python中重要的数据类型——列表:

           

2 基本操作 

2.1 index

index 方法用于从列表中找出某个元素的位置,如果有多个相同的元素,则返回第一个元素的位置。
看看例子:
>>> numbers = [1, 2, 3, 4, 5, 5, 7, 8] 
>>> numbers.index(5) # 列表有两个 5,返回第一个元素的位置 
4 
>>> numbers.index(2) 
1 
>>> words = ['hello', 'world', 'you', 'me', 'he'] 
>>> words.index('me') 
3 
>>> words.index('her') # 如果没找到元素,则会抛出异常 
Traceback (most recent call last):
File "<stdin>", line 1, in <module> 
ValueError: 'her' is not in list

2.2 count

count 方法用于统计某个元素在列表中出现的次数。看看例子:
>>> numbers = [1, 2, 3, 4, 5, 5, 6, 7] 
>>> numbers.count(2) # 出现一次 
1 
>>> numbers.count(5) # 出现了两次 
2 
>>> numbers.count(9) # 没有该元素,返回 0 
0

2.3 append

append 方法用于在列表末尾增加新的元素。看看例子:
>>> numbers = [1, 2, 3, 4, 5, 5, 6, 7] 
>>> numbers.append(8) # 增加 8 这个元素 
>>> numbers 
[1, 2, 3, 4, 5, 5, 6, 7, 8] 
>>> numbers.append([9, 10]) # 增加 [9, 10] 这个元素 
>>> numbers 
[1, 2, 3, 4, 5, 5, 6, 7, 8, [9, 10]]

2.4 extend

extend 方法将一个新列表的元素添加到原列表中。看看例子:
>>> a = [1, 2, 3] 
>>> b = [4, 5, 6] 
>>> a.extend(b)
>>> a 
[1, 2, 3, 4, 5, 6] 
>>> 
>>> a.extend(3) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: 'int' object is not iterable 
>>> a.extend([3]) 
>>> a 
[1, 2, 3, 4, 5, 6, 3]
注意到,虽然 append extend 可接收一个列表作为参数,但是 append 方法是将其作为一个元素添加到列表中,而 extend 则是将新列表的元素逐个添加到原列表中。

2.5 insert

insert 方法用于将某个元素添加到某个位置。看看例子:
>>> numbers = [1, 2, 3, 4, 5, 6] 
>>> numbers.insert(3, 9) 
>>> numbers 
[1, 2, 3, 9, 4, 5, 6]

2.6 pop

pop 方法用于移除列表中的一个元素(默认是最后一个),并且返回该元素的值。
看看例子:
>>> numbers = [1, 2, 3, 4, 5, 6] 
>>> numbers.pop() 
6 
>>> numbers 
[1, 2, 3, 4, 5] 
>>> numbers.pop(3)   #索引从0开始
4 
>>> numbers 
[1, 2, 3, 5]

2.7 remove

remove 方法用于移除列表中的某个匹配元素,如果有多个匹配,则移除第一个。
看看例子:
>>> numbers = [1, 2, 3, 5, 6, 7, 5, 8] 
>>> numbers.remove(5) # 有两个 5,移除第 1 个 
>>> numbers 
[1, 2, 3, 6, 7, 5, 8] 
>>> numbers.remove(9) # 没有匹配的元素,抛出异常 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ValueError: list.remove(x): x not in list

2.8 reverse

reverse 方法用于将列表中的元素进行反转。看看例子:
>>> numbers = [1, 2, 3, 5, 6, 7, 5, 8] 
>>> numbers.reverse() 
>>> numbers 
[8, 5, 7, 6, 5, 3, 2, 1]

2.9 sort

3 sort 

3.1 sort 方法

sort 方法用于对列表进行排序,注意该方法会改变原来的列表,而不是返回新的排序列表,另外,sort 方法的返回值是空。看看例子:
>>> a = [4, 3, 6, 8, 9, 1] 
>>> b = a.sort() 
>>> b == None # 返回值为空 
True 
>>> a 
[1, 3, 4, 6, 8, 9] # 原列表已经发生改变

3.2 sorted 方法

如果我们不想改变原列表,而是希望返回一个排序后的列表,可以使用 sorted 函数,如下:
>>> a = [4, 3, 6, 8, 9, 1] 
>>> b = sorted(a) # 返回一个排序后的列表 
>>> a 
[4, 3, 6, 8, 9, 1] # 原列表没有改变 
>>> b 
[1, 3, 4, 6, 8, 9] # 这是对原列表排序后的列表

3.3 降序排序

注意到,不管是 sort 方法还是 sorted 函数,默认排序都是升序排序。如果你想要降序排序,就需要指定排序参数了。比如,对 sort 方法,可以添加一个 reverse 关键字参数,如下:
>>> a = [4, 3, 6, 8, 9, 1] 
>>> a.sort(reverse=True) # 反向排序 
>>> a 4. [9, 8, 6, 4, 3, 1]
该参数对 sorted 函数同样适用:
>>> a = [4, 3, 6, 8, 9, 1] 
>>> sorted(a, reverse=True) 
[9, 8, 6, 4, 3, 1]

3.4 key 关键字方法

除了 reverse 关键字参数,还可以指定 key 关键字参数,它为每个元素创建一个键,然后所有元素按照这个键来排序,比如我们想根据元素的长度来排序:
>>> s = ['ccc', 'a', 'bb', 'dddd'] 
>>> s.sort(key=len) # 使用 len 作为键函数,根据元素长度排序 
>>> s 
['a', 'bb', 'ccc', 'dddd']

3.5 多列(属性)排序

另外,我们还可以使用 sorted 进行多列(属性)排序。看看例子:
>>> students = [ 
         ('john', 'B', 15), 
         ('jane', 'A', 12), 
         ('dave', 'B', 10), 
         ('ethan', 'C', 20), 
         ('peter', 'B', 20),
         ('mike', 'C', 16)] 
>>> 
# 对第 3 列排序 (从小到大) 
>> sorted(students, key=lambda student: student[2]) 
[('dave', 'B', 10), 
('jane', 'A', 12), 
('john', 'B', 15), 
('mike', 'C', 16), 
('ethan', 'C', 20), 
('peter', 'B', 20)] 
 
# 对第 2 列排序(从小到大),再对第 2 列从大到小排序: 
>>> sorted(students, key=lambda student: (student[1], -student[2])) 
[('jane', 'A', 12), 
('peter', 'B', 20), 
('john', 'B', 15), 
('dave', 'B', 10), 
('ethan', 'C', 20), 
('mike', 'C', 16)]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值