Skip to content

L3_05 数据结构

一、C++ 一维数组

1.1 定义和初始化

cpp
#include <iostream>
using namespace std;

int main() {
    // 方法1:声明并初始化
    int arr1[5] = {1, 2, 3, 4, 5};
    
    // 方法2:部分初始化,其余为0
    int arr2[5] = {1, 2};  // [1, 2, 0, 0, 0]
    
    // 方法3:自动推断大小
    int arr3[] = {1, 2, 3};  // 大小为3
    
    return 0;
}

1.2 访问数组元素

cpp
int arr[5] = {10, 20, 30, 40, 50};
cout << arr[0] << endl;  // 输出第一个元素
cout << arr[4] << endl;  // 输出最后一个元素

1.3 数组遍历

cpp
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i < size; i++) {
    cout << arr[i] << " ";
}

二、Python 列表

2.1 创建列表

python
# 空列表
list1 = []

# 有初始元素
list2 = [1, 2, 3, 4, 5]

# 混合类型
list3 = [1, "hello", 3.14, True]

2.2 访问元素

python
fruits = ["apple", "banana", "cherry"]
print(fruits[0])   # 第一个元素
print(fruits[-1])  # 最后一个元素

2.3 列表操作

python
fruits = ["apple", "banana", "cherry"]

# 添加元素
fruits.append("orange")

# 插入元素
fruits.insert(1, "grape")

# 删除元素
fruits.remove("banana")

# 列表长度
print(len(fruits))

三、Python 字典

3.1 创建字典

python
# 空字典
dict1 = {}

# 有初始键值对
person = {
    "name": "Alice",
    "age": 25,
    "city": "Beijing"
}

3.2 访问值

python
person = {"name": "Alice", "age": 25}
print(person["name"])   # 通过键访问
print(person.get("age")) # 使用get方法

3.3 字典操作

python
person = {"name": "Alice"}

# 添加键值对
person["age"] = 25

# 修改值
person["age"] = 26

# 删除键值对
del person["age"]

# 遍历字典
for key, value in person.items():
    print(key, value)

四、Python 元组

4.1 创建元组

python
# 使用圆括号
t1 = (1, 2, 3)

# 省略括号
t2 = 1, 2, 3

# 单元素元组(必须加逗号)
t3 = (1,)

4.2 特点

  • 不可变(不能修改元素)
  • 可以包含不同类型的元素
  • 占用内存比列表小

五、Python 集合

5.1 创建集合

python
# 使用花括号
s1 = {1, 2, 3, 4}

# 使用set()函数
s2 = set([1, 2, 3])

# 空集合
s3 = set()

5.2 特点

  • 无序
  • 不允许重复元素
  • 支持集合运算

5.3 集合操作

python
a = {1, 2, 3}
b = {3, 4, 5}

# 并集
print(a | b)  # {1, 2, 3, 4, 5}

# 交集
print(a & b)  # {3}

# 差集
print(a - b)  # {1, 2}

六、列表解析

6.1 基本语法

python
new_list = [expression for item in iterable]

6.2 示例

python
# 生成1-10的平方
squares = [x**2 for x in range(1, 11)]
print(squares)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 过滤偶数
evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8]

# 嵌套列表解析
matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened)  # [1, 2, 3, 4, 5, 6]

七、示例程序

7.1 C++ 数组求和

cpp
#include <iostream>
using namespace std;

int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int sum = 0;
    
    for (int num : arr) {
        sum += num;
    }
    
    cout << "数组和: " << sum << endl;
    return 0;
}

7.2 Python 列表统计

python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 计算偶数和
even_sum = sum(x for x in numbers if x % 2 == 0)
print("偶数和:", even_sum)

# 找出大于5的元素
greater_than_5 = [x for x in numbers if x > 5]
print("大于5的元素:", greater_than_5)

百炼成钢,融会贯通