列表介绍
Python内置的⼀种数据类型是列表: list 。 list 是一种有序的集合,可以随
时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list
表示:
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
结果:
[‘Michael’, ‘Bob’, ‘Tracy’]
- 列表的格式
变量A的类型为列表
A = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’] - 打印列表
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print(namesList[0])
print(namesList[1])
print(namesList[2])
列表的遍历
-
使用for循环
为了更有效率的输出列表的每个数据,可以使用循环来完成
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
for name in namesList:
print(name) -
使用while循环
为了更有效率的输出列表的每个数据,可以使用循环来完成
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
length = len(namesList)
i = 0
while i<length:
print(namesList[i])
i+=1
列表的常见操作
-
列表的长度
#用len()函数可以获得list元素的个数:
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
len(namesList) -
列表的访问
用索引来访问 list 中每一个位置的元素,记得索引是从0开始的:
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print(namesList[0])
print(namesList[1])
print(namesList[2])
print(namesList[3])
记得最后一个元素的索引是 len(classmates) - 1 。
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最
后一个元素:
namesList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print(namesList[-1]) -
添加元素( append , extend , insert )
通过 append 可以向列表添加元素
#定义变量A,默认有3个元素
A = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print("-----添加之前,列表A的数据-----")
for tempName in A:
print(tempName)
#提示、并添加元素
temp = input(‘请输入要添加的学生姓名:’)
A.append(temp)
print("-----添加之后,列表A的数据-----")
for tempName in A:
print(tempName)
通过 extend 可以将另一个集合中的元素逐一添加到列表中
a = [1, 2]
b = [3, 4]
a.append(b)
print(a)
[1, 2, [3, 4]]
a.extend(b)
print( a)
[1, 2, [3, 4], 3, 4]
insert(index, object) 在指定位置 index 前插入元素 object
a = [0, 1, 2]
a.insert(1, 3)
a
[0, 3, 1, 2]
-
修改元素
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
#定义变量A,默认有3个元素
A = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
print("-----修改之前,列表A的数据-----")
for tempName in A:
print(tempName)
#修改元素
A[1] = ‘xiaoLu’
print("-----修改之后,列表A的数据-----")
for tempName in A:
print(tempName)
结果:
-----修改之前,列表A的数据-----
xiaoWang
xiaoZhang
xiaoHua
-----修改之后,列表A的数据-----
xiaoWang
xiaoLu
xiaoHua -
查找元素
所谓的查找,就是看看指定的元素是否存在。
python中查找的常用方法为:
in (存在),如果存在那么结果为 true ,否则为 false
not in (不存在),如果不存在那么结果为 true ,否则 false
#待查找的列表
nameList = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]
#获取用户要查找的名字
findName = input(‘请输入要查找的姓名:’)
#查找是否存在
if findName in nameList:
print(‘在字典中找到了相同的名字’)
else:
print(‘没有找到’) -
删除元素
列表元素的常用删除方法有:
del:根据下标进行删除
pop:删除最后一个元素
remove:根据元素的值进行删除
(1) del
list1 = [‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
print(’------删除之前------’)
for tempName in list1:
print(tempName)
del movieName[2]
print(’------删除之后------’)
for tempName in list1:
print(tempName)
结果:
------删除之前------
a
b
c
d
e
f
------删除之后------
a
b
d
列表的常见操作
76
e
f
(2) pop
list2 = [‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
print(’------删除之前------’)
for tempName in list2:
print(tempName)
movieName.pop()
print(’------删除之后------’)
for tempName in list2:
print(tempName)
结果:
------删除之前------
a
b
c
d
e
f
------删除之后------
a
b
c
d
e
(3) remove
list3 = [‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
print(’------删除之前------’)
for tempName in list3:
print(tempName)
movieName.remove(‘e’)
print(’------删除之后------’)
for tempName in list3:
print(tempName)
结果:
------删除之前------
a
b
c
d
e
f
------删除之后------
a
b
c
d
f
(4) 排序
sort 方法是将 list 按特定顺序重新排列,默认为由小到大,参
数 reverse=True 可改为倒序,由大到小。
reverse 方法是将 list 逆置。
a = [1, 4, 2, 3]
a
[1, 4, 2, 3]a.reverse()
a
[3, 2, 4, 1]a.sort()
a
[1, 2, 3, 4]a.sort(reverse=True)
a
[4, 3, 2, 1]
元组(tuple)
另一种有序列表叫元组: tuple 。 tuple 和 list 非常类似,但是 tuple 一
旦初始化就不能修改,比如同样是列出同学的名字:
classmates = (‘Michael’, ‘Bob’, ‘Tracy’)
现在, classmates 这个 tuple 不能变了,它也没有 append() , insert( )
这样的方法。其他获取元素的方法和list是一样的,你可以正常地使
用 classmates[0] , classmates[-1] ,但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能
用 tuple 代替 list 就尽量用tuple 。
如果要定义一个空的 tuple ,可以写成 () :t = ()
t
()
但是,要定义1个只有1个元素的 tuple ,如果你这么定义:t = (1)
t
1
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数
学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括
号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加1个逗号,来消除歧义:t = (1,)
82t
(1,)
Python在显示只有1个元素的 `tuple 时,也会加1个逗号,以免误解成数学
计算意义上的括号。
来看1个“可变的”tuple:t = (‘a’, ‘b’, [‘A’, ‘B’])
t[2][0] = ‘X’
t[2][1] = ‘Y’
t
(‘a’, ‘b’, [‘X’, ‘Y’])
将学习上面的代码在编辑环境中实践如下:部分截图