List(列表)知识:1年级1班的班级生活
1.1 列表是个啥:List(列表)的基础知识:
今天我们来讲Python六大数据类型的第一种:List(列表)。本文将引入一个1年级1班的班级故事,本故事将贯穿教程始末,力求让每一个小知识点第一次出现在你面前时,都是灵活而可爱的。通过本文的学习后,你就能掌握关于List(列表)的所有相关知识了。那,跟着我一起看下好不啦?
A.List是啥?
a. List属于序列:序列共有 List 、 Turple 、 字符串 、 Unicode字符串 、 buffer对象 和 xrange对象 六种,所有序列都存在内部的索引(将在后文提及)。
b. List属于标准数据类型:Python标准数据类型共有 Number(数字) 、 String(字符串) 、 List(列表) 、 Turple(元组) 、 Set(集合) 、 Dictionary(字典) 六类。
B.List有啥特征?
我们先来看几个List(序列)长啥样:
>>> a = ['Think','123456','[1,2,3]']
观察可以看到:
a. 序列的基本结构为:变量 = [ ] ,即变量 、= 和 []。
b. 序列内的数据类型:不要求一致,可以有多种并存,甚至一个List里面还可以包含其他List。被包含的"子List"此时作为“母List”的元素。
c. 序列内的元素:序列内的内容为元素,元素数目可以为0,即空集 a = [] ;元素之间用 , 分隔开;如果元素为字符串,应用 ’ 或者 " 括起来。
C. 序列可以进行的基本操作:最基础的基本操作一共有五种:索引 、切片、加、乘、 检查,将在后文中进行详细解释。
1.2 可以对列表做啥:List(列表)的操作
a. 创建:1年级1班开学了!
我们假设1年级1班开学了,一共有李布尔、王多鱼、苏大强三名小朋友入学。我们简称1年级1班的班名为one,现在我们要打印出这个班级的同学名单:
>>> one = ['李布尔','王多鱼','苏大强'] >>> one ['李布尔', '王多鱼', '苏大强']
用中括号[ ]创建一个列表赋给one。当然班级也可以没人,比如隔壁1年级2班没人,list可以是空的:
>>> two = []
>>> two
[]
b. 计数 :班里有几个人?
这时候老师想知道1年级1班有几个人,三个人很容易数出来,可如果想知道全校的人数呢?需要调用 len(班级名) 这个语句来计数列表内的元素长度(数目):
>>> one = ['李布尔','王多鱼','苏大强'] >>> len(one) 3
注意:空list也可以用len,空list长度为0。比如我们看看惨淡的1年级2班:
>>> two = [] >>> len(two) 0
c. 访问元素:班里都是按学号点名的!
在学校里,每名同学都有自己的学号,这就是列表中的元素索引。
学号的制定规律:
1.在一个有人的班级中,每名同学都有两个学号(即索引),这个学号是以他们在整个班级中的相对位置确定的。
2.正数第一位学号为0,正数第二位学号为1…倒数第一位学号为-1,倒数第二位学号为-2。即:正数索引为n-1,倒数索引为-n。
比如以1年级1班为例:
>>> one = ['李布尔','王多鱼','苏大强']
王多鱼是正数第一位同学、倒数第三位同学。所以他的学号就有0和-3两个。
当老师想点名的时候,要用班级名[学号]的方式点学号。例如点二号同学:
>>> one = ['李布尔','王多鱼','苏大强']
>>> one[2]
'苏大强'
如果老师想知道某个同学的姓氏怎么办?对于列表内的元素我们还可以继续切割:
>>> one = ['李布尔','王多鱼','苏大强'] # 查看 1年级1班 学号为 0 的同学姓名:
>>> name = one[0] # 取该姓名索引为0的字符:
>>> name [0]
'李'
如果老师想叫多位同学,比如想叫从1号开始后面的所有同学呢?
>>> one = ['李布尔','王多鱼','苏大强']
>>> one[1:]
['王多鱼', '苏大强']
我们可以看到,就成功把1号和2号同学叫出来了。这里用的是切片的方式,即班级名[从第几号学生开始:截止到第几号学生之前],从第n号开始的全部可以用班级名 [n:],截止到n号之前的全部可以用班级名[:n]。
d. 追加元素 :1年级1班的新生
班里转来了一名新生,叫史晓明。我们用班级名.append(新同学名字) 的方式将他添到班级名单里,按照先来后到的规则,他自然排在最后:
第一种情况:默认添加新元素到列表末尾
>>> one = ['李布尔','王多鱼','苏大强']
>>> one.append('史晓明')
>>> one
['李布尔', '王多鱼', '苏大强', &