快速了解python中的List(列表)

学习目标:

通过本文了解python中的List(列表)


学习内容:

1.创建List(列表)
2.访问List(列表)
3.(append)附加List(列表)
4.(insert)插入List(列表)
5.(clear)清除List(列表)
6.(copy)复制List(列表)
7.(count)统计List(列表)
8.(index)查询List(列表)
9.(pop)移除List(列表)
10.(remove)移除List(列表)
11.(reverse)倒置List(列表)
12.(extend)扩展List(列表)
13.(sort)排序List(列表)


1.创建List(列表)

list_name = [element1, element2, element3,, elementn]

list_name是列表名,element是列表元素(列表元素包括所有的数据类型:int, float, complex, bool, str, None, bytes, tuple,list,dict,set )
列表元素可以是多个,也可以没有

list_name = [1, 2, 3]
list_name1 = []
list_name2 = list()

2.访问List(列表)

如果我们要去访问列表中的某一个元素,我们应该如何去访问呢
(注:我们是在列表的基础上访问元素,并没有生成新的列表)

list_name = [1, 2, [3, 4]]

当我们需要查询第一个元素时

print(list_name[0])
1

那如果我们需要在列表中查询第三个元素中的第一个元素该怎么查询呢

print(list_name[2][0])
3

总结:我们需要在中括号中填写所查询元素的下标

3.附加List(列表)

如果我们要在列表的基础上添加元素该怎么办呢
(注:我们是在列表的基础上附加元素,并没有生成新的列表)

list_name = [1, 2, 3]

我们需要用到append函数(append函数:使用append操作,可以对列表进行要素的追加。要注意的是每次只能在末尾追加一个要素)

list_name.append(4)
print(list_name)
[1, 2, 3, 4]

4.插入List(列表)

那当我们需要在列表的中间添加元素怎么办呢
(注:我们是在列表的基础上插入元素,并没有生成新的列表)

list_name = [1, 2, 3]

这时我们就需要用到insert函数
insert格式

list_name.insert(i, j)

list_name是列表名,i是想要添加元素所在位置的下标,y是列表元素
例如当我们想在第一个元素后面添加一个新的元素

list_name.insert(1,4)
print(list_name)
[1, 4, 2, 3]

5.清除List(列表)

当我们不再需要这个列表时,我们就用到了clear函数
(注:我们是在列表的基础上清除所有元素,并没有生成新的列表)

list_name = [1, 2, 3]
list_name.clear()
print(list_name)
[]

6.复制List(列表)

当我们需要复制这个列表的时候,我们就需要用到copy函数
copy函数分为浅拷贝(shallow copy)深拷贝(deep copy)
(注:我们并不是在列表的基础上复制元素,而是复制列表,产生了新的列表,我们需要新的列表名来定义)
那么这两种拷贝之间有什么区别呢,让我们一起举个例子看看吧

list_name = [1, 2, [1, 2]]

这个一个列表中包含一个列表的列表
让我们先来试试浅拷贝

shallow_copy = list_name.copy()
print(list_name)
print(shallow_copy)
[1, 2, [1, 2]] 
[1, 2, [1, 2]]

很显然,我们成功了,让我们再去试试深拷贝吧,要注意的是使用深拷贝之前我们需要使用标准库中的copy模块,所以要添加一行代码(from copy import deepcopy)

from copy import deepcopy
deep_copy = deepcopy(list_name)
print(deep_copy)
[1, 2, [1, 2]]

那么浅拷贝(shallow copy)和深拷贝(deep copy)之间有什么区别呢,我们可以试着去打印每个元素的id,来判断他们之间有什么区别

print(f"{'list_id':^20}{'list_1st_id':^20}{'list_2nd_id':^20}{'list_3rd_id':^20}{'list_3rd_1st_id':^20}{'list_3rd_2nd_id':^20}")
print(f"{id(list_name):^20}{id(list_name[0]):^20}{id(list_name[1]):^20}{id(list_name[2]):^20}{id(list_name[2][0]):^20}{id(list_name[2][1]):^20}")
print(f"{id(shallow_copy):^20}{id(shallow_copy[0]):^20}{id(shallow_copy[1]):^20}{id(shallow_copy[2]):^20}{id(shallow_copy[2][0]):^20}{id(shallow_copy[2][1]):^20}")
print(f"{id(deep_copy):^20}{id(deep_copy[0]):^20}{id(deep_copy[1]):^20}{id(deep_copy[2]):^20}{id(deep_copy[2][0]):^20}{id(deep_copy[2][1]):^20}")
      list_id           list_1st_id         list_2nd_id         list_3rd_id       list_3rd_1st_id     list_3rd_2nd_id   
   2146080290048      140723089109800     140723089109832      2146079166144      140723089109800     140723089109832   
   2146080290240      140723089109800     140723089109832      2146079166144      140723089109800     140723089109832   
   2146080591680      140723089109800     140723089109832      2146080426752      140723089109800     140723089109832 

我们会很明显的发现,无论是浅拷贝(shallow copy)还是深拷贝(deep copy),都是产生了新的列表;浅拷贝(shallow copy)和原来列表中元素的id是一样的;但是在深拷贝(deep copy)中,列表中的列表id与原列表的id是不一样的,其余的列表元素id是相同的。
可能也许还有些同学不是很理解浅拷贝(shallow copy)和深拷贝(deep copy)之间的区别,我画了一幅图来帮助同学们理解
在这里插入图片描述

7.统计List(列表)

如果一个列表中出现了多个相同的元素,我们应该怎么样来统计呢
(注:我们是在列表的基础上统计元素的个数,并没有生成新的列表)

list_name = [1, 2, 2, 3, 3, 3]

我们就需要用到count函数

print(list_name.count(2))
2

8.查询List(列表)

如果我们需要在列表中查询一个元素的下标,那么我们应该如何知道它的下标呢

list_name = [1, 2, 3, 4, 5, 6]

我们就需要用到index函数
(注:我们是在列表的基础上查询元素的下标,并没有生成新的列表)
例如我们需要查询 4 的下标

print(list_name.index(4))
3

9.移除List(列表)

当我们需要移除列表中的一个元素,我们就需要用到pop函数
(注:我们是在列表的基础上移除元素,返回了一个值,有生成新的列表)

list_name = [1, 2, 3]
new_list = list_name.pop()
print(list_name)
print(new_list)
[1, 2]
3

那我们该如何移除其他位置的元素呢,我们只需要在括号中写入想要移除元素的下标

list_name = [1, 2, 3]
new_list = list_name.pop(0)
print(list_name)
print(new_list)
[2, 3]
1

10.移除List(列表)

我们已经讲了一个pop函数了,为什么又要提到它呢
这次我们用的是remove函数,那么remove和pop函数之间有什么区别呢

list_name = [1, 2, 3]
new_list = list_name.remove(1)
print(list_name)
print(new_list)
[2, 3]
None

我们可以看到,运行之后是空类型,所以意味着用remove函数移除的元素是没有返回值
(注:我们是在列表的基础上移除元素,没有返回值,没有生成新的列表)

11.倒置List(列表)

如果我们需要倒置这个列表里的所有元素,该用什么函数呢

list_name = [1, 2, 3]

我们要用到reverse函数
(注:我们是在列表的基础上倒置元素,没有生成新的列表)

list_name.reverse()
print(list_name)
[3, 2, 1]

12.扩展List(列表)

我们需要扩展列表需要用到什么函数呢

list_name = [1, 2, 3]

extend函数就是用来扩展的,注意扩展的只能是可迭代的对象(可迭代的对象包括字符串,字节,元组,列表)
(注:我们是在列表的基础上扩展元素,没有生成新的列表)

list_name.extend([1])
print(list_name)
[1, 2, 3, 1]

13.排序List(列表)

列表中的元素是如何排列的呢

list_name = [1, 2, 3, 4, 5]

我们要用到sort函数
(注:我们是在列表的基础上排序元素,没有生成新的列表)

list_name.sort()
print(list_name)
[1, 2, 3, 4, 5]

为什么元素顺序没有发生任何变化呢,这是因为我们还需要在括号中加入一些东西

list_name.sort(key = None, reverse=False)
print(list_name)
list_name.sort(key = None, reverse=True)
print(list_name)
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

reverse我们之前刚说过,是倒置的意思,当reverse=False时,顺序还是原来的顺序;当reverse=True时,顺序就会发生倒置。
那么key是什么呢,key指的就是按照什么样的方式来排序

fruit_list = ['banana', 'orange', 'watermelon', 'apple', 'mango', 'grape', 'pineapple', 'durian', 'peach']
fruit_list.sort()
['apple', 'banana', 'durian', 'grape', 'mango', 'orange', 'peach', 'pineapple', 'watermelon']

在字符串中,默认安装二十六个字母的顺序排列,当第一个首字母相同时,再比较下一个,以此类推。

练习

使用for循环去获取列表的下标以及下标对应的值

list_data = [1, 2, 3, 4, 5, 6, 7 ,8]
for i in list_data:
    print(list_data.index(i),i)
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8

总结

通过本次学习,我们了解了python中的List(列表)类型的方法详解,现在让我们来回顾一下(append)附加,(insert)插入,(clear)清除,(copy)复制,(count)统计,(index)查询,(pop)移除,(remove)移除,(reverse)倒置,(extend)扩展,(sort)排序。其中只有(copy)复制和(pop)移除有新的列表产生,大家一定要注意。
以上就是我们这篇文章中的所有内容了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值