4.1 人人都爱的列表
- 列表的定义
列表是容纳一系列元素的容器
用[]定义,元素间“,”分隔
列表可以容纳不同类型元素 - 列表索引
从0开始编号,这个编号称为下标或索引(index) - 获取列表元素个数
使用len()函数可以获取列表中的元素个数
如果len()函数括号中提供的是一个字符串,则会返回字符串的字符总数
months = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December']
print(type(months))
print(len(months))
print(months[0], months[3])
运行结果
<class 'list'>
12
January April
4.2 元素的访问和修改
- 列表可以容纳不同类型的元素
-
months[-1]代表months列表的最后一个元素,months[-2]代表倒数第2个元素,以此类推
4.3 元素的增加
append()
向列表的末尾增加元素,用数组形式也可以添加多个元素
append() 方法是将参数作为一个元素增加到列表的末尾。
extend()
向列表的末尾增加元素,可以一次添加多个元素,但要用数组形式添加。
extend() 方法则是将参数作为一个列表去扩展列表的末尾。
>>> member.extend(['小甲鱼','小布丁'])
>>> member
['王俊凯', '王源', '易烊千玺', '柏力源', '小甲鱼', '小布丁']
insert()
可以定义添加元素的位置,insert(添加的位置,要添加的元素)
从0开始为第一个
jack = ['10000', 'Jack Ma', 47]
jack.append("CEO")
print("jack list after append:", jack)
jack.insert(2, 'male')
print("jack list after insert at position 2:", jack)
运行结果
March 4
The final element of months list is: December
4.4 元素的删除
remove()
需要知道具体的名字,具体删除
remove()函数从列表中移除遇到的第一个指定值的元素
del 列表名(索引值)
不加索引值,可以删除整个列表
pop()
- 不加参数,默认删除最后一个
- 可以赋值
- 加索引值,指定删除
jack = ['10000', 'Jack Ma', 'male', 47, 47, 'CEO', 47]
sGender = jack.pop(2)
print("jack list after pop(2):", jack)
print("The popped element is:", sGender)
jack.remove(47)
print("jack list after remove(47):", jack)
del jack[1]
print("jack list after del:", jack)
运行结果
jack list after pop(2): ['10000', 'Jack Ma', 47, 47, 'CEO', 47]
The popped element is: male
jack list after remove(47): ['10000', 'Jack Ma', 47, 'CEO', 47]
jack list after del: ['10000', 47, 'CEO', 47]
4.5 列表的嵌套
jack = ['10000', 'Jack Ma', 'male', 47, 'CEO']
mary = ['10001', 'Mary Lee', 'female', 25, 'Secretary']
tom = ['10002', 'Tom Henry', 'male', 28, 'Engineer']
dora = ['10003', 'Dora Chen', 'female', 32, 'Sales']
employees = [jack, mary, tom]
employees.append(dora)
print(employees[2])
print(employees[2][1])
运行结果
['10002', 'Tom Henry', 'male', 28, 'Engineer']
Tom Henry
employees[2]代表这个列表中的第2(0开始数)个元素,即tom。
employees[2][1]则代表tom列表中的第1个元素,也就是姓名,即Tom Henry
4.6 名字绑定
person1 = ['10000', 'Jack Ma', 'male', 47, 'CEO']
person2 = person1
person2[1] = "Tom Henry"
print(person1)
print(person2)
运行结果
['10000', 'Tom Henry', 'male', 47, 'CEO']
['10000', 'Tom Henry', 'male', 47, 'CEO']
person1和person2指向是同一个列表对象!
Python将列表从一个变量赋值到另一个变量(或者函数参数传递)时,并不会拷贝列表的复制品,而是选择将列表关联到另一个变量/名字。
4.7 元素顺序
4.7.1排序
sort()函数是列表的成员函数,其作用是将列表内的元素按递增(非递减)排序; 如果加上参数reverse=True,则按递减(非递增)排序
names.sort()会导致names内元素的顺序被改变;
names = ['jack', 'mary', 'tom', 'dorothy', 'peter']
names.sort() # 默认按字母排序
print(names)
names.sort(key=len) # 根据长度排序
print("sort by len:", names)
scores = [82, 66, 66, 93, 24, 15, 77.8]
scores.sort(reverse=True)
print(scores)
运行结果
['dorothy', 'jack', 'mary', 'peter', 'tom']
sort by len: ['tom', 'jack', 'mary', 'peter', 'dorothy']
[93, 82, 77.8, 66, 66, 24, 15]
sorted()函数返回排好序的新列表,同时保持原列表不变。
sorted()函数也可以使用reverse及key参数。
Sorted()函数是内置函数
names = ['jack', 'mary', 'tom', 'dorothy', 'peter']
namesSorted = sorted(names)
print("names: ", names)
print("namesSorted: ", namesSorted)
运行结果
names: ['jack', 'mary', 'tom', 'dorothy', 'peter']
namesSorted: ['dorothy', 'jack', 'mary', 'peter', 'tom']
4.7.2倒序
names.reverse()函数将原有的列表内元素顺序倒过来,不会对列表排序
name = ['jack', 'mary', 'tom', 'dorothy', 'peter']
name.reverse()
print(name)
运行结果
['peter', 'dorothy', 'tom', 'mary', 'jack']
4.8 for循环遍历
- 格式
for <循环变量> in <遍历数据集>:
<语句块>
dummy = ['jack', 5, False, 3.1415926, 'mary', ["A", "B"]]
for x in dummy:
print(x)
print(type(x))
print("This line does not belong to for loop.")
运行结果
jack
<class 'str'>
5
<class 'int'>
False
<class 'bool'>
3.1415926
<class 'float'>
mary
<class 'str'>
['A', 'B']
<class 'list'>
This line does not belong to for loop.
for循环将dummy列表视为一个集合,集合内有多少个元素,循环体(第4和5行)就重复多少次
4.9 数值列表
4.9.1 range函数
range()函数可以用于创建一个“整数列表”
- range(x)生成一个[0,x)区间内的整数列表
- range(x,y)生成一个[x,y)区间内的整数列表
- range(x,y,z),x,y表示取值范围为[x,y),z表示列表相邻元素间的间隔
print("output of range(5):")
for i in range(5):
print(i)
print("output of range(2,5):")
for x in range(2, 5):
print(x)
print("output of range(2,5):")
for y in range(2, 5, 2):
print(y)