挑战 30 天学完 Python:Day5 数据类型 - 列表 list
🎉 本系列为 Python 基础学习,原稿来源于 github 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过 30 天完成正儿八经的系统化实践。此系列适合零基础同学,会简单用但又没有系统学习的使用者。总之如果你想提升自己的 Python 技能,欢迎加入《挑战 30 天学完 Python》。
作者:大奇 MegaQi | Info 签约作者 ,专注测试开发技术实战干货分享,欢迎访问主页长期关注。
列表 Lists
在 Python 中有四种集合数据类型:
列表 list:一个有序并且可修改的(可变)集合,允许有重复元素。
元组 tuple:一个有序但不能改变或者修改的(不可变)集合,允许有重复元素。
集合 set:一个无序,无索引且不可修改的集合。但可以向 set 中添加新的元素。不允许有重复元素。
字典 dict:一个无序集合,可改变可修改,且有索引,没有重复元素。
本篇要学的 **列表 **是不同数据类型的集合,它们是有序和可修改的(可变的)。列表可以为空,也可以有不同的数据类型项。
如何创建 list
Python 中创建列表集有两种方式:
使用 list 内置函数
使用方括号 []
如果一个列表带有初始值,我们可以使用 len() 方法计算列表的长度。
列表中的元素可以包含数据类型
索引访问列表项
正索引
我们访问列表中的项使用索引,下角标从 0 开始。下图很清晰的展示索引所代表的项,最后一个为数组长度减 1。
负索引
负索引表示从末尾开始,-1 表示最后一项,-2 表示倒数第二项。<br />
拆包列表项
列表可以通过赋值语句进行快速拆包。简单来讲就是将集合中的多个元素同时赋值给多个变量。其中*变量
可以接受 1 到多个。如下边的例子前三项按顺序拆包分别赋值给了变量,剩余项全部给了最后一个动态变量。
具体举两个例子:
切片操作列表
正索引:我们可以通过指定开始 start、结束 end 指定索引范围,步指定间隔来返回一个新的列表。默认值 start=0,end=len(列表) -1,step=1。
负索引:同样我们可以通过负索引来对列表进行切片获取新的 list 操作。
如何修改 list
List 是可变(可修改)的有序项集合,修改的方法是通过列表索引重新赋值。<br />让我们修改水果列表为例:
检查 list 项
判断某项是否存在 list 集合中使用 in
操作符。看如下例子:
添加项到 list
如果想要向已有的 list 中添加新的项,我们使用append()
函数方法。请注意此方法是向末尾追加项。
插入项到 list
上边 append 只能末尾追加新项,如果想在 list 某位置插入项,需要使用insert()
方法。注意,此方法插入位置后边顺序往右移动。insert 方法有两个参数:_index_索引 和 _item_插入项。
移除 list 项
Remove
使用 remove()
方法对 list 指定项进行移除。如果移除的项不存在则会报 ValueError 错误。
Pop
方法函数pop()
它删除指定的索引(如果没有指定 index 则删除最后一项)。
这里请你尝试下如果如下两种情况会得到什么样结果:
pop 给定一个超出范围的 index
对一个空列表[]使用 pop<a name="XUppA"></a>
Del
此方法del()
删除指定的索引。除此之外它还可以用于删除索引范围内的项,也可以完全删除列表。
拷贝 list
通过 list2=list1 方法可以将一个 list 重新复制给一个新变量。这种方式下 list2 是 list1 的引用,任何在 list2 中的修改都将改变原是原始 list1。但很多情况下,我们不希望改变原 list,而是创建一个不关联的副本。避免上述问题的一种方式就是使用 copy()
方法函数。
连接 list
在 Python 中可以通过以下方式连接两个或多个列表。
方式一: 加号运算符(+),直接将两个 list 相加返回一个组合列表集合。
方式二:使用
extend()
方法。此方法允许在原有 list 追加一个 list。
计数 list 项
方法 count()
返回一个项在列表中出现的次数。
查找项索引
方法 index() 返回给定项在 list 的索引。如果找不到返回 ValueError:x is not in list。
list 项排序
要对列表进行排序,我们使用内置函数 sort()
或 sorted()
。
sort():此排序方法将列表项按升序重新排序,并修改原始列表。如果方法参数 reverse 等于 true,它将按降序排列列表项。
sorted():在于在不改变原是列表的情况下返回有序列表。注意使用语法是 list 作为一个参数传给 sorted,而不是 list 的一个属性。
🌕 你非常勤奋,你并且取得了很大的成就。你当前完成了第 5 天学习,在完成挑战的路上迈出了 5 步。现在让我们通过练习好好回忆和巩固下在list
所学的知识吧。<a name="flikR"></a>
第 5 天练习
练习 1 级
声明一个空的 list。
声明一个 list 并初始化 5 项数据。
计算刚刚声明 list 的长度。
分别获取第一、中间和最后一个列表项。
声明一个名为 mixed_data_types 的 list,然后赋予以下不同类型数据:你的姓名,年龄,是否毕业,身高,家庭地址。
声明 list 变量名为 it_companies 并且初始化一些公司数据 Facebook, Google, Microsoft, Apple, IBM, Oracle and Amazon。
使用 print() 打印刚刚声明的 it_companies。
计算打印公司 list 的项的个数。
分别输出第一、中间和最后公司名。
任意更改公司 list 中一数据,然后打印出来。
追加一个新公司到 it_companies。
再新增公司到 list 中间的位置。
选择 it_companies 一项非全大写名更改其全部大写。
使用引号内字符'#;' 将 it_companies 列表数据连接起来。
搜索一个公司是否存在 it_companies 列表内。
使用方法 sort() 对其 list 进行排序。
使用 reverse() 降序排序。
切片方式获取 it_companies 的前三项。
切片方式获取 it_companies 的后三项。
切片方式获取位于列表中间的几项。
从列表中移除第一个公司。
从列表中移除中间的一家公司。
从列表中移除最右一家公司。
从列表中移除所有公司。
删除/销毁 it_companies 列表。
将下边给出的 list 进行合并连接。
在完成 26 题后,拷贝 copy 这个列表到一新列表变量 full_stack。然后在 Redux 后插入 Python 和 SQL。
练习 2 级
有如下一个包含 10 名同学年龄的 list,根据要求完成练习。
通过排序然后找出最小和最大年龄;
添加一个更小和更大的年年龄数到 ages 列表中;
找出中位数年龄(中间一项或中间两项除以二);
找出平均年龄(所有项目的总和除以它们的数量);
找出年龄的范围(最大值-最小值)。
比较(min - average)和(max - average)的值,使用
abs()
方法。
有列表如:['China', 'Russia', 'USA', 'Finland', 'Sweden', 'Norway', 'Denmark'],现将前三个国家和其他国家拆开。
🎉 CONGRATULATIONS ! 🎉
英文原文:Day5 - List
如喜欢通过“点赞👍收藏❤️关注➕”鼓励作者大奇
文章中如有错误或疑问欢迎指正和交流。
版权声明: 本文为 InfoQ 作者【MegaQi】的原创文章。
原文链接:【http://xie.infoq.cn/article/19629904d91e5ebbc10ad6c70】。文章转载请联系作者。
评论