Python数据结构:数组

python的数组常见操作

1. 创建数组

# 空列表
empty_list = []

# 初始化列表
my_list = [1, 2, 3, "apple", True]  # 可混合类型
numbers = [5, 2, 8, 4, 1]

2. 访问元素

# 通过索引(从0开始)
print(my_list[0])    # 输出:1
print(my_list[-1])   # 输出:True(负数索引从末尾开始)

# 切片(左闭右开区间)
print(numbers[1:3])  # 输出:[2, 8](索引1到2)
print(numbers[:3])   # 输出:[5, 2, 8](从头到索引2)
print(numbers[2:])   # 输出:[8, 4, 1](索引2到末尾)

3. 修改元素

my_list[0] = "banana"  # 修改第一个元素
print(my_list)         # 输出:["banana", 2, 3, "apple", True]

4. 添加元素

# 末尾添加单个元素
my_list.append(10)     # 列表变为[... , True, 10]

# 合并另一个列表(或可迭代对象)
my_list.extend([20, 30])  # 列表末尾添加20和30

# 在指定位置插入元素
my_list.insert(1, "orange")  # 在索引1处插入"orange"

5. 删除元素

# 按值删除(删除第一个匹配项)
my_list.remove("apple")  # 删除"apple"

# 按索引删除
popped = my_list.pop(2)  # 删除索引2的元素,返回被删元素
del my_list[0]           # 删除第一个元素

# 清空列表
my_list.clear()          # 列表变为[]

6. 遍历和列表推导式

# 直接遍历元素
for item in my_list:
    print(item)

# 遍历索引和元素
for index, value in enumerate(my_list):
    print(f"索引{index}的值是{value}")

列表推导式

# 生成新列表(如平方数)
squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]

# 带条件的推导式
even_numbers = [x for x in range(10) if x % 2 == 0]  # [0, 2, 4, 6, 8]

7. 排序和反转

# 原地升序排序(修改原列表)
numbers.sort()            # 变为[1, 2, 4, 5, 8]
numbers.sort(reverse=True)  # 降序排序

# 生成新排序列表(不修改原列表)
sorted_numbers = sorted(numbers)

# 反转列表
numbers.reverse()          # 原地反转
reversed_list = numbers[::-1]  # 生成新反转列表

8. 查找个统计

# 判断元素是否存在
if "apple" in my_list:
    print("存在")

# 查找索引(不存在会报错)
index = numbers.index(5)   # 返回第一个5的索引

# 统计元素出现次数
count = numbers.count(2)  # 返回2出现的次数

9. 内置函数

length = len(numbers)     # 列表长度
total = sum(numbers)      # 元素总和(仅限数字)
max_num = max(numbers)    # 最大值
min_num = min(numbers)    # 最小值

10. 深拷贝和浅拷贝

# 浅拷贝(复制一层)
copied = numbers.copy()     # 或 copied = numbers[:]

# 注意:嵌套列表需深拷贝(需导入copy模块)
import copy
deep_copied = copy.deepcopy(nested_list)

11. 交集、合集、差集

交集:同时存在于所有列表中的元素(去重)。

list1 = [1, 2, 2, 3]
list2 = [2, 3, 4]

# 转换为集合求交集
intersection = list(set(list1) & set(list2))  # 输出 [2, 3](去重)
# 或
intersection = list(set(list1).intersection(list2))

合集:所有列表中的唯一元素(去重)。

union = list(set(list1) | set(list2))  # 输出 [1, 2, 3, 4]

差集:存在于列表 A 但不在列表 B 中的元素(去重)。

diff = list(set(list1) - set(list2))  # 输出 [1]