大家好,我是python网络爬虫这门课程的主要讲师geo
资料结构是所有 Python 程式的基础。 爬虫、资料处理、数据分析、AI 等几乎所有任务都离不开它。
列表(List)与基本操作
- 可变(mutable)
- 有顺序
- 可放不同类型的元素
fruits = ["apple", "banana", "cherry"]
fruits.append("mango")
print(fruits[1]) # banana # python的索引从0开始
删除元素有三个方法
使用 remove():按值删除
fruits.remove("banana")
使用 pop():按索引删除
fruits.pop(2)
# 删除索引为2的元素("cherry")
# 它会删除并返回该索引的元素。
使用 del:也可删除指定索引
del fruits[0]
# 删除索引为0的元素("apple")
切片(Slicing)
print(fruits[1:3])
# ['banana', 'cherry']
# list[start:end] # 含 start,不含 end
插入元素 insert()
fruits.insert(1, "orange")
# 在索引1插入 orange
遍历列表:for 循环
for fruit in fruits:
print(fruit)
如果需要索引:
for i, fruit in enumerate(fruits):
print(i, fruit)
长度
len(fruits)
排序
fruits.sort()
fruits.sort(reverse=True)
或不修改原列表:
sorted_list = sorted(fruits)
字典(Dict)
# 字典
person = {"name": "Tom", "age": 30}
print(person["name"])
新增/修改值
person["job"] = "Engineer"
安全存取 get()
不会报错:
print(person.get("salary")) # None
print(person.get("salary", 0)) # 0
删除元素
del person["age"]
或使用 pop:
job = person.pop("job")
遍历字典
遍历 key
for key in person:
print(key)
遍历 value
for value in person.values():
print(value)
遍历 (key, value)
for key, value in person.items():
print(key, value)
字典的常见应用场景
- 网站爬虫解析 JSON
- 统计文字出现次数
- 资料清洗
- 建立 lookup 查表
- 记录使用者资料、设定档
字典是 Python 最重要的数据结构之一,必须熟悉
元组(Tuple)
- 元组与列表很像,但它是 不可修改(immutable)。
- 安全性高
- 速度比列表快
- 可当作字典 key(因为可哈希)
coordinates = (10.0, 20.0)
资料结构固定时特别适合:
user = ("Tom", 30, "Male")
元组拆包(tuple unpacking)
x, y = (10, 20)
用于交换变量:
a, b = b, a
单元素 tuple 要加逗号
t = (5,) # 正确
否则只是括号,并不是 tuple。
set
集合是一种 无序、元素不重复的结构,适合做数学集合运算。
s = {1, 2, 3}
s.add(4)
s.remove(2)
print(s)
# 集合运算
a = {1,2,3}
b = {3,4,5}
print(a | b) # 并集
print(a & b) # 交集