Python 的内置容器之 list (列表) 详细指南!!
python 的内置容器 : 有四个
list (列表) set (集合) tuple(元祖) dict (字典)
list : ( 列表 ) [ ]
定义 list : 有两种方法来定义 列表
# 第一种 : 通过若数据类型语言的特点,直接将值赋值为一个变量
users = [ '中国','伟大','人民','永远万岁',77,54]
type(users)
<class 'list'>
可以看到 ,users 这个变量 就是 list 类型
# 第二种 : 通过 list 全局函数来定义创建
u2 = list()
type(u2)
<class 'list'>
注 : 第二种方式的赋值是如下 :
u2 = list([ '人民','伟大','马斯克',45,55])
print(u2)
['人民', '伟大', '马斯克', 45, 55]
访问列表元素 : 通过访问列表元素的下标来获取元素
注 : 下标是从 0 开始的!!!!
u2 = list([ '人民','伟大','马斯克',45,55])
u2[2]
'马斯克'
u2 [ 2 ] -----> 获取 u2 中的 第3个 值
修改列表元素 :
u2 = list([ '人民','伟大','马斯克',45,55])
u2[4]='坏坏'
print( u2 )
['人民', '伟大', '马斯克', 45, '坏坏']
u2[3] = 55
print (u2)
['人民', '伟大', '马斯克', 55, '坏坏']
# u2 [ 4 ] = ' 坏坏 ' -----> 修改 u2 列表里第5个值为 ' 坏坏 '
# u2 [ 3 ] = ' 55' -----> 修改 u2 列表里第4个值 为 '55'
列表的遍历 :
# 第一种 : for 示例
for i in u2 :print(i)人民
伟大
马斯克
55
坏坏
# 第二种 : while 示例
u2 = list(['马斯克','厉害','秦始皇',77,100])index=0while index<len(u2) :print(u2[index])index+=1结果 :
马斯克
厉害
秦始皇
77
100
注 : while 得自己造一个 索引 (index),通过索引来访问元素
列表的常见方法 :
dir(list)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
注 : 我们使用 dir() 这个全局函数可以查看模块,对象等 他们的全局函数
# 我们可以看到结果里面有很多 两侧都有的下划线的方法 : 类似 : _add_
这些叫做魔法方法,暂时不需要掌握!!!
# 我们需要掌握的是 :
append clear copy count extend sort
index insert pop remove reverse
# 接下来我们对这几个方法示例如下 :
append : 在尾部追加新的元素
示例 :
u1=list(['巴西','中国','俄罗斯','印度',888,777])
print(u1)
['巴西', '中国', '俄罗斯', '印度', 888, 777]u1.append('美国')
print(u1)
['巴西', '中国', '俄罗斯', '印度', 888, 777, '美国']
注 : 可以看到 append 添加的元素只是在 列表尾部上添加的!!!!
insert : 可以在 列表的特定位置进行添加元素 ,它是 下标 加 元素
示例 :
u1.insert(3,'巴铁')
print( u1 )
['巴西', '中国', '俄罗斯', '巴铁', '印度', 888, 777, '美国']
注 : 可以看到 在列表的 第四个位置 添加了 ' 巴铁 ' 字样
要是 添加的位置 是不存在的 比如 : 1000 则和 append 一样在尾部
clear : 清空列表 ( 它没有元素 )
u1.clear()
print ( u1 )
[]
注 : 可以看到 u1 里在没有元素!!被清空了
remove : 通过元素本身删除 元素
示例 :
u2 = list([ '宏旗','宝马','奔驰','奥迪',744,580] )
print(u2)
['宏旗', '宝马', '奔驰', '奥迪', 744, 580]u2.remove('宏旗')
print(u2)
['宝马', '奔驰', '奥迪', 744, 580]
注 : remove 是删除元素中的第一个值 : 什么叫第一个值,就是倘若列表里都
是相同的元素,那么使用 remove 删除元素本身其结果是怎样的呢??
所以 remove 删除元素是删除元素中的第一个元素 (倘若列表里有相同的
元素) 请看下面示例 :
u3=list(['aaa','aaa',78,'五环'] )u3.remove('aaa')
print(u3)
['aaa', 78, '五环']
显然 当列表里有相同的元素 'aaa' 时,remove 删除的就是第一个 'aaa'
pop : 可以通过元素位置(下标),去删除元素,默认删除最后一个元素(在
没有指定元素位置的情况下)
pop 删除元素后还会返回出 元素
示例 :
print( u2 )
['宏旗', '宝马', '奔驰', '奥迪', 744, 580]
u2.pop()
580
print( u2 )
['宝马', '奔驰', '奥迪', '744']
u2.pop(3)
744
注 : 可以看到在没有指定位置的时候,pop删除的是列表最后的元素,并且 pop
确实会 把删除的元素再返回出来!!!
count : 统计该元素在列表里出现了几次 括号里是元素 , count ( 元素 )
示例 :
u2
['宝马', '奔驰', '奥迪', '744', '特朗普', '特朗普', '特朗普', '特朗普', '特朗普']
u2.count('特朗普')
5
注 : count 统计出 列表里的 '特朗普' 有 5 个 !!
index : index ( 元素 ) 获取元素在列表中的第一次出现的位置 (下标) !!
示例 :
u2
['宝马', '奔驰', '奥迪', '744', '特朗普', '特朗普', '特朗普', '特朗普', '特朗普']
u2.index('奥迪')
2
reverse : 翻转列表, 把列表里的元素 倒过来!!
示例 :
u2
['宝马', '奔驰', '奥迪', '744', '特朗普', '特朗普', '特朗普', '特朗普', '特朗普']u2.reverse()
u2
['特朗普', '特朗普', '特朗普', '特朗普', '特朗普', '744', '奥迪', '奔驰', '宝马']
sort : 排序列表中的元素, 但有要求 : 就是列表中的元素必须得是一个数
据类型, 数据类型倘若不一致,则使用 sort 会报错!!!
示例 :
u4 = list( [ '巴顿','将军',7788,456])
u4.sort()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
注 : 显然 报错!!(u4 列表里的元素数据类型不一致必然报错)
示例 :
u4
[7788, 456, 458, 666]
u4.sort()
u4
[456, 458, 666, 7788]
注 : 显然,当 u4 列表里全是 同一个 数据类型时,它排序成功(以升序排序)
当然,你可能会问,那如果都是字符串类型,还能排序嘛??
u5 = list(['是','谁说','大锅'])
u5.sort()
u5
['大锅', '是', '谁说']
答案是可以的 !!!( 猜测 应该是靠着 ASSCAL 码去排序的)
不过也没人对 字符串进行 排序吧!!!!!
注 : 关于 sort () 还有一个点就是 : 它其实也是可以带参数的 但是仅限 两个固定参数
如下 : sort( reverse=False ) -----> 这是默认的 sort 里面带的参数(升序的意思)
你还可以进行修改 : 当你使用的时候可以 改为 : sort( reverse = True )
但是,修改完后 sort 则是 降序的排序!!
示例 :
u4
[456, 458, 666, 7788]
u4.sort(reverse = True )
u4
[7788, 666, 458, 456]
修改 sort 的参数 再使用就是 降序排序 !!!!!
extend : 继承 , 它是多个列表的合并 !!!
示例 :
u5
['大锅', '是', '谁说']
u4
[7788, 666, 458, 456]
u4.extend(u5)
u4
[7788, 666, 458, 456, '大锅', '是', '谁说']
可以看到 extend 就是把 两个列表 合并起来!!! ,u4 把 u5 继承了起来!!
copy : 复制 它是对值的拷贝 !! 它是一个 浅拷贝对象
首先: 需要清楚一点是 : 复制 和 引用传递 是两个完全的不同的概念 !!
示例 :
u2
['特朗普', '特朗普', '特朗普', '特朗普', '特朗普', '744', '奥迪', '奔驰', '宝马']
u4
['大锅', '是', '谁说']
u2=u4
u2
['大锅', '是', '谁说']
u4
['大锅', '是', '谁说']
注 : 上示就可以看到 ,在没有做出变化之前(没有让 u2=u4),u2 和 u4 各是各
的值,但是 : 当 u2=u4 之后,会发现,u2 的值发生了变化,全部变为 u4 的
值,就是 和 u4 的值一模一样 !!!!
解释 : (在这里不充分打开讲)
u2=u4 这个就叫 “ 引用传递 ” 并不叫 “ 复制 ”
那为什么 u2=u4 ,然后 u2 的值就成了 u4 呢??
因为这是相当于 u4 直接把 它的地址 赋给了 u2 ,也就是说,u2 和
u4,现在是同一个 地址(都是 u4 的地址)既然是同一个地址就说明
地址所对应的值(就是地址在内存中所存放的值)是一样的!!!
因为你是同一个地址嘛,所以,u2 和 u4 最后都是同一个值。
再说白了, " 引用传递 " 的 “ 引用 ” 就是 地址引用,就是把地址传
递给了别人,就是 u4 把自己的地址 传给了 u2 使得它俩现在是相
同的地址 。
那么,是相同的地址到底意味着什么呢???
当 u4 把地址 引用传递给了 u2 后意味着当 一者发生变化时,另一
者必然发生变化,即 : 当给 u4 发生变化的时候,u2 的值也会发生
变化 。
示例 :
u2=u4
u2
['大锅', '是', '谁说']
u4
['大锅', '是', '谁说']
u4.append('fuN')
u4
['大锅', '是', '谁说', 'fuN']
u2
['大锅', '是', '谁说', 'fuN']
注 : 可以看到,当给 u4 添加一个 值 ('fuN') ,相应的, u2 列表里的值同样也产
生了一个 'fuN' 值
再看如果对 u2 发生变化 u4 会不会随之改变呢??
u2
['大锅', '是', '谁说', 'fuN']
u2.remove('是')
u2
['大锅', '谁说', 'fuN']
u4
['大锅', '谁说', 'fuN']
注 : 可以看见,当我们对 u2 删除了 ' 是 ' 这个元素后 ,u4 也相应的删除了 ' 是 '
总 : 以上就是我们要说的 单单对于 “ 引用传递 ” 的解释
它是对 “ 地址 ” 的拷贝
而我们要讲的 copy 是哪种拷贝呢 ??
在开始的时候,我们就说了 它是对 “ 值 ” 的拷贝!!!(也叫作 对象 的拷贝)
就是把 对象拷贝了一份,它会获取一模一样的值(对象),但是它们的 地址却依旧
不一样,也就是说 : 它们不存在 一个改变继而影响另一个 !!!
示例 :
u5=u4.copy()
u5
['大锅', '谁说', 'fuN']
u4.append('增加了吗?')
u4
['大锅', '谁说', 'fuN', '增加了吗?']
u2
['大锅', '谁说', 'fuN', '增加了吗?']
u5
['大锅', '谁说', 'fuN']
注 : 可以看到 ,我们对 u5 进行 复制 u4 ,查看 u5 其值 和 u4 也是一模一样,
因为 u5 把 u4 的值 复制了过来呀!!!
但是,当我们对 u4 进行变化的时候(添加元素),会发现,u4,u2 都增加
了相应的值,但是回过头来再查看 u5 它的值并没有发生改变!!
这就充分说明了 : u5 的 copy 复制 只是对 值 的复制,并没有对 地址复
制!!!!
上示 : 就是 引用传递 和 复制 的区别!!也是 copy 的用法 !!!
# copy() 括号里是不能带 元素的 !!!
Python 的内置容器之 list (列表) 详细指南!!相关推荐
- python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....
Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...
- python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
[简答题]实例1:求两数相除的结果. 先后输入2个数据,计算第一个数除以第二个数的结果. 要求能够处理输入数据为非数字.除数为零.文件末尾EndOfFile 和用户使用Ctrl + C 命令终止程序等 ...
- Python内置函数sorted()和列表方法sort()的排序原理
问题描述:在Python中,可以使用内置函数sorted()和列表方法sort()对数据进行排序,但要求所有数据支持关系运算符,也就是这些数据本身是可以比较大小的才能进行排序,除非使用key参数明确指 ...
- Python内置函数sorted()和列表方法sort()排序规则不得不说的事
Python内置函数sorted()和列表方法sort()可以使用key参数指定排序规则,并且都是稳定排序,也就是说,对于指定规则不能涵盖的元素,本来谁在前面,排好以后谁还是在前面. 直接用代码说话: ...
- 以下哪个不是python的内置函数_以下哪个 Python 内置函数可以返回列表对象中元素个数。...
[多选题]假设 x=[0,1,2,3],执行哪些语句之后,x 的值为[0, 1, 2]. [多选题]以下哪些对象的分隔符为逗号. [单选题]已知列表 x=[0,1,2,1,4],那么执行语句 del ...
- python常用内置函数总结-Python 常用内置函数
Python 常用内置函数如下: 1. abs()函数返回数字的绝对值. print( abs(-45) )# 返回45print("abs(0.2):",abs(0.2))#返回 ...
- python字符串内置方法
网上已经有很多,自己操作一遍,加深印象. dir dir会返回一个内置方法与属性列表,用字符串'a,b,cdefg'测试一下 dir('a,b,cdefg') 得到一个列表 ['__add__','_ ...
- Python模块内置函数
一.任务描述 本实验任务主要完成对Python模块内置函数进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python模块内置函数,并对Python内置函数的基本操作进行整理并填写工作任务报 ...
- python print()内置函数
啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...
最新文章
- 用双注意力模块来做语义分割
- 迪士尼又出黑科技,可将自然语言脚本转化为VR视频
- leetcode笔记:Gray Code(2016腾讯软件开发笔试题)
- html网页语言是什么,HTML是什么?
- 编程语言与思维:科技公司如何自我重构?
- boost::polygon::detail::robust_fpt相关的测试程序
- 在windows上编译apr等相关动态库
- 计算机存储技术及应用,计算机数据安全存储技术及应用
- 关于在 matlab 中使用 ode45 算出拉格朗日方程中的关节加速度
- 吃掉那只青蛙_每日可交付成果–吃青蛙的艺术
- oauth2 单点登录_六个高Star开源项目,让你更懂OAuth和单点登录
- echarts在(React,Vue)中的使用总结
- 冷高轮时间王思聪吃热狗电脑屏幕保护下载
- Mysql出现Table 'performance_schema.session_status' doesn't exist
- 阿里巴巴国际站新店铺3个月的成果
- 玩拍七不再怕,判断7的倍数有妙招
- kpi绩效考核流程图_松松客服KPI绩效考核表经验分享
- 百度oCPC一键联调激活教程?api怎么对接?
- 基于 HTML5 WebGL 的高炉炉体三维热力图监控,展示“智慧工厂”十八般武艺
- 电脑网页打开巨慢但是网络正常
热门文章
- 计算机网络基础实验,计算机网络基础实验报告
- 水仙花c语言代码3位数,3位数水仙花数C语言的问题
- FIDO(身份认证标准):UAF(终端认证+私钥加签)/U2F
- 简析LGSVL自动驾驶仿真系统
- 手把手教你达梦数据库:备份与还原详细步骤
- 一种基于SparkSQL的Hive数据仓库拉链表缓慢变化维(SCD2+SCD1)的示例实现
- D-bus 介绍(一)
- 1分钟制作反映情绪的定制型沐浴膏,爱茉莉太平洋再获CES创新奖
- 时间序列分析实验报告总结_时间序列分析实验报告.doc
- JavaScript常用的Hook脚本