首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >十五天Python系统学习教程第二天

十五天Python系统学习教程第二天

作者头像
紫风
发布2025-10-14 15:31:07
发布2025-10-14 15:31:07
300
代码可运行
举报
运行总次数:0
代码可运行
📅 Day 2 详细学习计划:Python数据类型与数据结构

学习目标 ✅ 掌握Python动态类型特性 ✅ 熟练使用列表(List)、字典(Dict)、集合(Set)、元组(Tuple) ✅ 理解Python与Java数据结构的核心差异 ✅ 完成文本词频统计实战


一、Python数据类型详解(1小时)
1.1 动态类型 vs 静态类型

特性

Java

Python

类型声明

强制声明 (int x = 10;)

自动推导 (x = 10)

类型检查

编译时检查

运行时检查

类型转换

显式转换 ((int) 3.14)

隐式转换 (int(3.14))

示例代码对比

代码语言:javascript
代码运行次数:0
运行
复制
// Java (静态类型)
List<String> names = new ArrayList<>();  // 必须声明泛型类型
names.add("Alice");
// names.add(123);  // 编译报错
代码语言:javascript
代码运行次数:0
运行
复制
# Python (动态类型)
names = ["Alice"]    # 初始为字符串列表
names.append(123)    # 运行时允许混合类型
print(names)         # ['Alice', 123] 

1.2 核心数据类型对照表

Python类型

Java近似类型

可变性

示例

特点

list

ArrayList

可变

[1, "a", True]

有序,允许重复,支持混合类型

dict

HashMap

可变

{"name": "John"}

键值对,快速查找

tuple

无直接对应

不可变

(1, "apple")

轻量级,适合保护数据

set

HashSet

可变

{1, 2, 3}

无序,元素唯一


二、数据结构操作对比(1小时)
2.1 列表(List)深度对比

基础操作对比

代码语言:javascript
代码运行次数:0
运行
复制
// Java ArrayList
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.get(0);
nums.remove(0);
代码语言:javascript
代码运行次数:0
运行
复制
# Python list
nums = [1, 2, 3]
nums.append(4)       # 追加元素
print(nums[0])       # 索引访问
nums.pop(0)          # 删除元素

高级操作

代码语言:javascript
代码运行次数:0
运行
复制
# 列表推导式(Java无类似语法)
squares = [x**2 for x in range(10)]          # [0, 1, 4, ..., 81]
even_squares = [x**2 for x in range(10) if x % 2 == 0]

# 切片操作(比Java subList更简洁)
nums = [0,1,2,3,4,5]
print(nums[1:4])     # [1,2,3]
print(nums[::2])     # [0,2,4]

2.2 字典(Dict)深度对比

基础操作

代码语言:javascript
代码运行次数:0
运行
复制
// Java HashMap
HashMap<String, Integer> map = new HashMap<>();
map.put("age", 30);
map.get("age");
代码语言:javascript
代码运行次数:0
运行
复制
# Python dict
user = {"name": "John", "age": 30}
user["email"] = "john@example.com"  # 新增键值对
print(user.get("phone", "N/A"))     # 安全获取,避免KeyError

字典推导式

代码语言:javascript
代码运行次数:0
运行
复制
# 将列表转为字典
fruits = ["apple", "banana", "cherry"]
length_map = {fruit: len(fruit) for fruit in fruits}
# {'apple':5, 'banana':6, 'cherry':6}

2.3 集合(Set)特殊操作
代码语言:javascript
代码运行次数:0
运行
复制
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}

三、实战项目:文本词频统计(1小时)
3.1 需求分析

输入:任意英文文本 输出:单词出现频率降序排列 示例输入:

代码语言:javascript
代码运行次数:0
运行
复制
"Hello world! Hello Python. Python is awesome."
代码语言:javascript
代码运行次数:0
运行
复制

示例输出:

代码语言:javascript
代码运行次数:0
运行
复制
hello: 2  
python: 2  
world: 1  
is: 1  
awesome: 1

3.2 分步实现

步骤1:文本预处理

代码语言:javascript
代码运行次数:0
运行
复制
text = "Hello world! Hello Python. Python is awesome."
# 转为小写并分割单词
words = text.lower().split()  
# ['hello', 'world!', 'hello', 'python.', 'python', 'is', 'awesome.']

# 使用正则表达式去标点
import re
clean_words = [re.sub(r'[^\w]', '', word) for word in words]
# ['hello', 'world', 'hello', 'python', 'python', 'is', 'awesome']

步骤2:使用字典统计频率

代码语言:javascript
代码运行次数:0
运行
复制
word_count = {}
for word in clean_words:
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1

# 更简洁的写法
from collections import defaultdict
word_count = defaultdict(int)
for word in clean_words:
    word_count[word] += 1

步骤3:结果排序输出

代码语言:javascript
代码运行次数:0
运行
复制
# 按值降序排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)

# 格式化输出
for word, count in sorted_words:
    print(f"{word}: {count}")
代码语言:javascript
代码运行次数:0
运行
复制

3.3 完整代码
代码语言:javascript
代码运行次数:0
运行
复制
import re
from collections import defaultdict

def word_frequency(text):
    # 清洗数据
    words = text.lower().split()
    clean_words = [re.sub(r'[^\w]', '', word) for word in words]
    
    # 统计词频
    counts = defaultdict(int)
    for word in clean_words:
        if word:  # 过滤空字符串
            counts[word] += 1
    
    # 排序输出
    return sorted(counts.items(), key=lambda x: (-x[1], x[0]))

# 测试
sample_text = "Hello world! Hello Python. Python is awesome."
result = word_frequency(sample_text)
for word, count in result:
    print(f"{word}: {count}")

四、Java与Python关键差异总结

特性

Java

Python

空值处理

null

None

迭代方式

for (int num : nums)

for num in nums:

哈希结构

HashMap需要指定泛型类型

dict自动处理任意类型键值

内存管理

需要关注对象销毁

引用计数 + 垃圾回收机制


五、扩展练习

增强词频统计

  • 添加停用词过滤功能(忽略"is", "a", "the"等)
  • 支持从文件读取文本

列表操作挑战 使用列表推导式生成乘法表:

代码语言:javascript
代码运行次数:0
运行
复制
[[i*j for j in range(1,10)] for i in range(1,10)]

通过第二天的学习,您将深入掌握Python核心数据结构的使用技巧,并理解与Java的核心差异。关键要点: 1️⃣ Python的动态类型带来灵活性,但也需要更谨慎的类型处理 2️⃣ 列表推导式等语法糖能极大提升开发效率 3️⃣ 字典是Python最强大的数据结构之一,善用可以简化复杂逻辑

本篇的分享就到这里了,感谢观看,如果对你有帮助,别忘了点赞+收藏+关注。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📅 Day 2 详细学习计划:Python数据类型与数据结构
  • 一、Python数据类型详解(1小时)
    • 1.1 动态类型 vs 静态类型
    • 1.2 核心数据类型对照表
  • 二、数据结构操作对比(1小时)
    • 2.1 列表(List)深度对比
    • 2.2 字典(Dict)深度对比
    • 2.3 集合(Set)特殊操作
  • 三、实战项目:文本词频统计(1小时)
    • 3.1 需求分析
    • 3.2 分步实现
    • 3.3 完整代码
  • 四、Java与Python关键差异总结
  • 五、扩展练习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档