python基础 资料结构

大家好,我是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)   # 交集