Hello,这一期我们把Python的三个常用的基础数据结构之一的List讲一下(具体来说应该是四个,set也算一个),把数据结构讲完后,下期就开始讲控制语句了,有了控制语句,基本的逻辑代码就可以敲起来了。
注:小编所介绍到的知识都是Python3.0的版本。
List列表
List属于Python的6个基本序列之一,它有着序列的通用特性,包括索引,切片,加法,乘法,长度,检查成员等。list数据结构基本标志是'[ ]',它的成员都是在中括号里面的,例如:
list1=['java','python','C++','typescript','HTML']
这边是一个列表,列表里面的元素可以由各种元素组成,数字,字符串,列表等。他们可以混合存在,就是说,一个列表里面可以同时存在列表,字符串和数字。他们之间互不影响。例如:
list2=[list1,'helloworld',25.55,[1,2,3]]
执行输出:print (list2)
PS D:\johnturingwu> python D:\johnturingwu\test.py
[['java', 'python', 'C++', 'typescript', 'HTML'], 'helloworld', 25.55, [1, 2, 3]]
从这里我们也可以看出,列表其实就相当于一个仓库,它里面能存放好多数据,所以一般遇到定义多个数据的时候,我们就可以通过一个list来解决问题。
1、访问列表中的值
我们刚学会了定义一个list,现在我们要从list中把需要的值取出来该怎么取呢?
很简单,通过下标取值即可。
在list中,每个元素都有自己的下标,他们从前至后是有序的,从0开始计数,到最后一个结束,一般取下标的时候我们需要用中括号括起来,就像这样:list1[0],list1[1],list1[2].....
当然,除了这样计数,我们还有另一种计数方法,倒过来计数:从后至前数,最后一个也就是倒数第一个,它的下标是-1,依次往前数,就像这样:list1[-1],list[-2],list[-3].....
测试:
print (list1[0],list1[-1])
输出:java HTML
以上便是通过下标访问单个元素的方式。
那么问题来了,要是我们需要回去大量连续的元素数据,那应该怎么办?
难道还需要list[1],list[2],list[3]....这样一直写下去吗?
答案当然不是的,我们可以通过切片来获取元素。如何进行切片呢?下面小编就来介绍一下。
切片,顾名思义,就是从整个list中选择某一个区间的元素,我们是通过在中括号中加第二个参数,来完成切片的。两个数字之间" : "进行连接,例子如下:
list1[0:3]
这就是对list1进行切片,获取前3个元素的值。(第一个元素的下标为0),来看一下例子的输出结果:
list1=['java','python','C++','typescript','HTML']
print(list1[0:3])
输出:
['java', 'python', 'C++']
有同学开始问了:这里不是截取了0-3四个元素吗,结果应该是四个啊?怎么输出只有三个?
这里小编要讲一下,使用切片时有一点要注意:切片的两个参数,是第一个参数的值可以取的到,但第二个参数的值就取不到了,用数学用来说就是左闭右开区间【数学表示法 [0,3)】,能取的到0(第一个元素),取不到3(第四个元素)。
那有的同学又开始问了:切片时候选的数字能不能倒过来数,从-1开始往前数?
答案当然是可以的。你觉得怎么方便怎么来,但是有一点要注意一下,次序不能乱,要注意下标的顺序,我们来举个具体的例子:
print(list1[-1:-3])
输出:
[]
print(list1[-3:-1])
输出:
['C++', 'typescript']
从中我们我们看出,如果截取的次序颠倒,我们就拿不到我们想要的值,只能得到一个空列表。 这里我们也看到了,最后一个值没有被取到。那有什么方法能娶到最后一个值呢,答案有两个:
list[-3:5] 第二个参数的值取列表最后一个元素的下标
list[-3:] 冒号后面省略不写,系统默认取到最后一个元素
2、更新列表中的值
刚刚我们学会了访问列表中的值,那列表中的值我们怎么去修改呢?
很简单,指定你想修改元素的下标,在给它赋值即可,我们可以看看这个例子:
list1=['java','python','C++','typescript','HTML']
list1[0]='PHP' #第一个元素换成PHP
print(list1)
输出:
['PHP', 'python', 'C++', 'typescript', 'HTML']
list1=['java','python','C++','typescript','HTML']
list1[0:3]=['Python'] #把前三个元素用Python代替
print(list1)
输出:
['Python', 'typescript', 'HTML']
3、删除列表中的值
列表中的值可以通过del语句进行删除
del list1[2]
输出:
['java', 'python', 'typescript', 'HTML']
del也可以删除整个list
del list1
此时整个list1都被删除了
再次打印list1会报错:
Traceback (most recent call last):
File "C:\Users\yuqing.wu\Desktop\qaaa\test.py", line 3, in <module>
print(list1)
NameError: name 'list1' is not defined
4、list的函数
关于list,有一些自己的函数,这边我们介绍四个常用的函数:
a.len()函数:返回列表的长度
len(list1)
输出:
_> 5
b.max()函数:返回列表中的最大值(按asc码大小排序)
max(list1)
输出:
typescript
c.min()函数:返回列表中的最小值
min(list1)
输出:
_> C++
d.list()函数:将一个其他序列转化list
string="hello"
print(list(string))
输出:
_> ['h', 'e', 'l', 'l', 'o']
5、list的方法
list有很多自己的内置方法,这边我们来看看一些常用的方法。
list.append(obj) |
用来在列表中添加对象的
list1=['java','python','C++','typescript','HTML']
a='php'
list1.append(a)
print(list1)
_> ['java', 'python', 'C++', 'typescript', 'HTML', 'php']
list.count(obj) |
用来统计某个元素在列表中出现的次数
list2=[1,2,4,5,6,3,2,1,2,1,5,1,2,1,2,1,3]
print(list2.count(1))
输出:
_> 6
代表元素1出现了6次
list.extend(seq) |
在列表中添加新的列表中的元素,参数传入的是一个序列
list1=['java','python','C++','typescript','HTML']
list2=['PHP','R','Ruby','swfit']
list1.extend(list2)
print(list1)
输出:
_> ['java', 'python', 'C++', 'typescript', 'HTML', 'PHP', 'R', 'Ruby', 'swfit']
如果这里用append方法,它则是将list2嵌套在list1中:
list1.append(list2)
print(list1)
输出:
_> ['java', 'python', 'C++', 'typescript', 'HTML', ['PHP', 'R', 'Ruby', 'swfit']]
list.pop() |
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list1=['java','python','C++','typescript','HTML']
print(list1.pop())
print(list1)
输出:
_> HTML ['java', 'python', 'C++', 'typescript']
list.clear() |
用来请空列表
list1=['java','python','C++','typescript','HTML']
list1.clear()
print(list1)
输出:
_> []
list.reverse() |
将列表中的元素倒过来排
list1=['java','python','C++','typescript','HTML']
list1.reverse()
print(list1)
输出:
_> ['HTML', 'typescript', 'C++', 'python', 'java']
list.sort() |
对列表进行排序,按照asc码排列的顺序
list1=['java','python','C++','typescript','HTML']
list2=[1,2,4,5,6,3,2,1,2,1,5,1,11,3]
list1.sort()
list2.sort()
print(list1)
print(list2)
输出:
_> ['C++', 'HTML', 'java', 'python', 'typescript'] [1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 5, 6, 11]
今天关于列表的知识就讲到这里了。
下期再见。