Python语言是一种面向对象编程语言(Object-Oriented Programming Language),简称为OOP语言。在Python语言中,一切皆为对象(object),无论是变量还是函数,它们都是属于某一个特定的类(class)。类中的对象叫做该类的实例(instance)。
变量或者值都是对象,它们的数据类型是类。我们可以把类视为数据类型的概括。当我们把2赋给id时,id就表示整数类的对象。我们说id是整数类的一个实例。类似地,string、int、float都是类。
在本章,我们将介绍四个基本的数据结构: 列表,元组,字典,集合。精通各种数据结构的用法是成为专家级Python程序员的关键环节。本篇将介绍Python列表相关的重要知识点。
列表
列表(list)是一个有序的序列结构,序列中的元素可以是不同的数据类型。由于列表是一个序列,所以列表可以进行一系列序列操作如索引、切片、加、乘和检查成员等。Python内置了用于判断列表长度及确定列表中最大和最小元素的方法。
1.1
创建列表
创建列表的方式很简单,将列表中的各元素用逗号分隔开,并用中括号将所有元素包裹起来。比如我们想要将某人的姓名,年龄,性别,成绩存入Bob_list列表中,则可以使用如下方式:
output:
['peter', 12, 'Male', 91]
1.2
列表对象增减
如果我们想要在列表中加入此人的身高,则可以使用append()方法,该方法会在列表末尾位置添加数据元素。方法的调用方式与函数不同,方法的调用需要在对象之后加上点符号.:
output:
['Bob', 12, 'Male', 91, 178]
如果我们想要删除列表中某一位元素,则我们需要使用remove()方法。下面我们将刚刚增加的身高删除掉:
output:
['Bob', 12, 'Male', 91]
1.3
列表索引
类似字符串(及所有其他内置序列类型),列表可以索引和切片。我们首先要搞清楚Python语言中所有的索引都是从开始计数的,如果列表中有n个元素,那么最后一个元素的索引是n-1。Bob_list中的元素索引位置及值的关系表为:
index(索引位置)
如果我们想要获取Bob_list中第3个元素,则可以使用如下方法:
Bob_list[]
output:
'Male'
我们还可以使用负号,逆序进行索引,如果我们想要获取Bob_list中的倒数第二个元素,则可以使用以下方法:
Bob_list[]
output:
'Male'
在“列表对象增减”部分,我们谈到了remove()方法,但是该方法适用于知道要删除的值的情况,当我们不知道具体元素值,但是知道元素的索引位置时,我们可以使用del函数配合列表索引删除索引位置的元素,或者使用pop()方法(该方法算是insert()方法的逆运算),举个例子,我们将性别删除掉,我们已经知道此元素的索引位置为-2:
Bob_list= [,,,]
Bob_list[]
Bob_list
Bob_list= [,,,]
()
Bob_list
output:
['Bob', 12, 91]
['Bob', 12, 91]
除此之外,我们还可以通过insert()方法在指定的索引位置添加数据元素,比如我们想要在第2个位置添加国籍为‘CHN’,则我们使用如下方式:
(,)
Bob_list
output:
['Bob', 'CHN', 12, 'Male', 91]
1.4
列表切片
如果我们现在需要取Bob_list中的第2到第4个元素,按照我们之前学习的内容,可能需要依次取第2、第3、第4个元素,这样看起来虽然不是很复杂,但是如果我们的列表有上千个元素,我们需要取其中的索引位置20到100的元素呢?好在Python提供了切片(Slicing)操作符,可以非常方便完成这种操作。
切片操作需要提供起始索引位置和最后索引位置,然后用冒号:将两者分开,其语法结构为:
列表名称[起始索引位置:最后索引位置:步长]
如果未输入步长,则默认步长为1。切片操作返回一系列从起始索引位置开始到最后索引位置结束的数据元素。这里需要注意的是,起始索引位置的值包含在返回结果中,而最后索引位置的值不包含在返回结果中。如下所示:
Bob_list=[,,,]
Bob_list[]
Bob_list[]
output:
[12, 'Male', 91]
[12, 'Male', 91]
1.5
列表函数及方法
Python包含以下函数:
Python包含以下方法:
1.6
列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list[1*1,2*2,3*3,...,10*10],列表生成式则可以用一行语句代替循环生成上面的list:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
还可以使用两层循环,可以生成全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
大数据爱好者,请扫以下二维码加“SAS中文论坛”志愿者为好友,“SAS中文论坛”志愿者会把您邀请入群。
领取专属 10元无门槛券
私享最新 技术干货