《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情




list类型

阅读:227570622    分享到

基本数据类型是其它语言都必有的数据类型,但 list 数据类型在其它语言中并不一定是内置的数据类型,比如 c++ 语言,c++ 里面的 list 可以是第三方的 stl 库提供的, 也可以是程序员自己创造的一种数据类型,但是 Python 解释器内置 list 数据类型。

list 是 Python 内置的一种数据类型,list 是一种有序的集合,有序集合并不是集合里面的数据是有序的, 有序集合的意思是可以通过下标访问的集合,有序集合的概念我们在上一小节提到,在此重述一遍。

list 定义

因为 python 是动态语言,定义一个 list 变量不需要显式的定义 list,list定义是用 [] 或者 list([]),我们以后习惯于直接用 [],因为书写简单易懂,[] 里面的数据是 list 的成员。

ugly_list = ["ruhua", "xingxing", "konglong"]
print(ugly_list)

当然,如果 [] 里面可以不放入数据,也是一个 list,是一个空的 list。注意,空 list 是假值。

beauty_list = []
print(beauty_list)

if not beauty_list:
    print("beauty_list 是假值")

可以通过下标来访问 list 中的成员,索引是从 0 开始的,list 是变量,我们可以通过下标修改 list 成员的值。

ugly_list = ["ruhua", "xingxing", "konglong"]
print(ugly_list[0])           # 通过下标访问成员

ugly_list[1] = "zhaoritian"   # 通过下标修改成员
print(ugly_list)

操作 list 常用的函数

上节我们知道 len 函数是 Python 内置的函数,并且可以用于获取字符串长度,同样 len 函数可以获得 list 的长度。

ugly_list = ["ruhua", "xingxing", "konglong"]
print(len(ugly_list))

可以通过 list 的 index 函数获取成员所在的下标, 如果指定 start 和 stop 范围,则在指定范围(左闭右开)内查找, 如果该成员不存在,则 Python 解释器抛出异常。

ugly_list = ["ruhua", "xingxing", "konglong"]
print(ugly_list.index("xingxing"))        # 返回下标 1
print(ugly_list.index("zhaoritian"))      # 抛出异常
print(ugly_list.index("konglong", 0, 2))  # 抛出异常,因为范围在[0,2)

我们知道通过下标可以访问和修改成员的值但无法添加值, 我们可以通过 list 的 insert 函数,插入元素到 list 中的某个位置。

ugly_list = ["ruhua", "xingxing", "konglong"]
ugly_list.insert(1, "zhaoritian")
print(ugly_list)

可以用 list 的 pop 函数,删除所指定的索引的成员,如果索引不存在(越界),则 Python 解释器抛出异常, remove 函数可以删除指定的成员,如果该成员不存,则 Python 解释器抛出异常。

# pop 函数
ugly_list = ["ruhua", "xingxing", "konglong"]
ugly_list.pop(1)   # ok
print(ugly_list)
ugly_list.pop(10)  # 抛出异常,因为索引越界
print(ugly_list)

# remove 函数
ugly_list = ["ruhua", "xingxing", "konglong"]
ugly_list.remove("xingxing")    # ok
print(ugly_list)
ugly_list.remove("zhaoritian")  # 抛出异常,因为成员不存在
print(ugly_list)

list 成员的本质

list 中的成员可以是任何类型,成员的数据类型也可以不同, 空 list 用 [] 表示,我们前面讲过 [] 是假值,但是 [] 不是 False 也不是 None,更不是 0 或 "",因为数据类型不同。

mylist = ["Hello", 250, [1, 2, 3]]
print(mylist)
otherlist = []
print(otherlist == False)  # False
print(not otherlist)       # True

list 中的成员用逗号隔开,每个成员无论数据类型多么复杂,也只是一个成员。

mylist = ["Hello", 250, [1, 2, 3]]
len_mylist = len(mylist)
print(len_mylist)    # 结果为 3

print(mylist[0])     # "Hello"
print(mylist[2])     # [1, 2, 3]
mylist[2][1] = 5     # 正确,[1, 2, 3] 是变量,里面的成员可以修改
mylist[0][1] = "F"   # 错误,"Hello" 是常量,里面的成员不可修改

本节重要知识点

熟练运用操作 list 的函数。

弄明白 list 数据成员的本质。

作业

著名公司(某团)对于以下代码,运行一下看下结果,想想为什么?(答案参考高级运算符章节的身份运算符知识点)

listone = ["Hello", 250, [1, 2, 3]]
listtwo = listone
listone[1] = 300
print(listtwo)

如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
Wren
2023年4月3日 15:50 回复

["Hello",300,[1,2,3]] Python 解释器所有的变量之间赋值都是采用的浅拷贝方案,浅拷贝就是把赋值运算符(=)右边的变量里面所指向值的内存地址直接赋值给左边的变量。 对list进行增删改查,不会改变其已赋值的变量id


user_image
王烽a
2020年8月6日 07:58 回复

['Hello', 300, [1, 2, 3]]


user_image
yyj
2020年8月4日 13:09 回复

listone = ["Hello", 250, [1, 2, 3]]

listtwo = listone

listone[1] = 300

print(listtwo)

运行结果:

['Hello', 300, [1, 2, 3]]


user_image
芳草天
2020年8月3日 19:21 回复

['Hello', 300, [1, 2, 3]]


user_image
芳草天
2020年8月3日 19:21 回复

['Hello', 300, [1, 2, 3]]


user_image
芳草天
2020年8月3日 19:21 回复

['Hello', 300, [1, 2, 3]]


user_image
15137884849
2020年7月31日 08:37 回复

运行结果:['Hello', 300, [1, 2, 3]]


user_image
海克斯科技大冰锤
2020年2月13日 01:12 回复

列表list是[]

list有append()方法,增加元素

pop删除元素并带有返回值

元组tuple是()

没有增加删除方法,

如果只定义1个值需要加"," t = (1,)


user_image
一条叫小白的黑狗
2019年1月7日 12:34 回复

a[:]是复制一个列表, 删除一个复制的列表,却变成了clear...


user_image
飄夢
2018年4月10日 20:33 回复

pop默认删除组后一个元素