告别零散信息:我在 Python 的容器里,看见世界开始被整理
前面几篇写下来,我一直在和“一个值”打交道。
一个变量,一次计算,一个判断,一个分支,一段循环。
可写到这里,我忽然发现,现实里的信息根本不是这样单独出现的。
一个班的成绩,不是一分。
一篇文字,不是一个字。
一个人的资料,也不只是名字这一项。
也就是从这里开始,我第一次强烈地感觉到,Python 不再只是处理单个值了,它开始学着把零散的信息收拢、分类、整理。
我后来会把这一段理解成:程序终于开始有“收纳能力”了。
1. 列表最先让我明白,很多东西本来就该放在一起
最先接触到的,是列表 list。
scores = [82, 91, 76, 88]
print(scores[0])
scores.append(95)
print(scores)
列表给我的第一感觉很直接。
前面如果只靠变量去记这些分数,你可能要写 score1、score2、score3、score4。
可一旦数据多起来,这种写法很快就乱了。
而列表的意义,就是把一组同类数据放进同一个容器里。
到这里我才慢慢发现,原来“整理信息”本身就是一种能力。
不是所有东西都要零零碎碎地摆着,有些信息天然就应该被放在一起。
2. 索引、切片和遍历,让我第一次看见“顺序”也很重要
列表不只是能装东西,它还是有顺序的。
nums = [1, 2, 3, 4, 5, 6]
print(nums[2])
print(nums[1:5:2])
for index, value inenumerate(nums):
print(index, value)
写到这里时,我第一次明显感觉到,程序已经不只是“有没有这组数据”,而是在问:
第几个是谁?
从哪一段到哪一段?
我能不能一个一个把它们拿出来?
这就是索引、切片和遍历真正带来的变化。
它们让一组数据不再只是堆在一起,而是变得可以按位置去理解、去处理。
3. 列表的方法让我知道,容器不是摆设,它是会变化的
列表最实用的一点,是它会跟着操作继续变化。
names = ['小明', '小田']
names.append('小红')
names.insert(1, '阿宁')
names.remove('小田')
print(names)
这几个动作看起来不复杂,但它们让我第一次真正感受到:
容器不是静止的盒子。
它可以增加、插入、删除,还能在处理过程中不断调整自己的内容。
所以这一段最值得记住的知识点其实很清楚:
到这里,列表已经不只是“放数据的地方”,它开始像一个可以被整理的现场。
4. 元组让我第一次理解,不是所有数据都应该被改来改去
接着出现的是元组 tuple。
student = ('zhizhi, 22, 'female')
print(student[0])
print(len(student))
元组和列表很像,也能按位置取值,也能遍历。
但它有一个特别关键的区别:元组创建以后,里面的元素不能直接修改。
刚学到这里时,我反而松了一口气。
因为它在提醒我,不是所有数据都应该被频繁改动。
有些信息更适合保持稳定,比如坐标、身份信息、固定配置。
所以我后来会把列表和元组的差别记成一句很朴素的话:
5. range() 和字符串,让我意识到“序列”不一定都要手写出来
这一段里还有两个很重要的过渡点,一个是 range(),一个是字符串。
print(list(range(2, 10, 3)))
text = 'hello world'
print(text.upper())
print(text.split(' '))
print('#'.join(['a', 'b', 'c']))
range() 让我知道,有些有规律的序列并不需要一个一个手写出来。
而字符串则让我第一次更认真地意识到,文字本身也是一种序列。
它能遍历,能切片,能统计,能查找,还能拆开再重新拼起来。
这一点对我很重要。
因为我本来就更习惯和文字打交道。
当我看见字符串也能像列表一样被处理时,我会突然觉得,代码没有离我那么远。
6. 字典真正打动我的,是它开始让程序像在处理“人物资料”
如果说列表是在按顺序放东西,那字典 dict 最打动我的地方,就是它开始允许我“按名字找东西”。
user = {
'name': '栀栀',
'password': '123456',
'status': True,
}
print(user['name'])
print(user.get('status'))
这里的信息不是靠第几个来区分,而是靠键值对来组织。
写到这里时,我会明显感觉到,程序对现实世界的贴近程度一下子高了很多。
因为现实里的很多信息,本来就不是按位置记的,而是按“字段”记的。
名字、密码、状态、身高、年龄。
这时候字典一下子就变得特别自然。
而真正让我一下子理解它的,不是定义,而是那个登录系统的小练习。
users = {
'栀栀': {'password': '123', 'status': True},
'明明': {'password': '456', 'status': False},
}
name = '栀栀'
pwd = '123'
if name in users and pwd == users[name]['password'] and users[name]['status']:
print('登录成功')
elif name in users andnot users[name]['status']:
print('账号失效')
else:
print('用户名或密码错误')
这段代码一出来,我第一次明显感觉到,前面学过的判断、循环、容器,终于开始像在处理一个真实场景了。
它不再只是几道分开的练习题,而是慢慢有了“系统”的样子。
7. 集合让我看见,有些时候我们真正关心的不是顺序,而是“不要重复”
接着出现的是集合 set。
scores = [80, 70, 60, 80, 70, 60, 40]
unique_scores = set(scores)
print(unique_scores)
a = {1, 2, 3, 4}
b = {3, 4, 5}
print(a & b)
print(a | b)
集合最打动我的地方,是它把“去重”这件事说得特别干脆。
你不用自己一个一个检查有没有重复,集合天然就帮你把重复值过滤掉了。
而且它还能做交集、并集。
到了这里我会很明显地感觉到,Python 不是只会存数据,它开始帮我整理关系了。
哪些是重复的,哪些是共同的,哪些合并起来会是什么样子。
8. 这一段真正补上的,是“常用容器”的知识骨架
写到这里,我后来会把这一段的核心知识点总结成这几条:
- • 列表
list:有序、可修改,适合装一组会变化的数据 - • 元组
tuple:有序、不可修改,适合装相对固定的数据 - • 字符串
str:文本序列,常用操作有切片、查找、拆分、连接 - • 字典
dict:键值对结构,适合按字段组织信息 - •
range():快速生成整数序列,常和循环一起使用
我觉得这一段特别重要。
因为它补上的,不只是几个新类型,而是一种新的思路:
当数据开始变多时,你不能只想着“值是多少”,你还得想“它们应该怎么被组织起来”。
9. “一年中的第几天”这个练习,让我第一次看见前面的知识开始合流
这一段里还有一个我很喜欢的综合练习,就是输入一个日期,算出它是这一年的第几天。
date = '2026-03-27'.split('-')
year = int(date[0])
month = int(date[1])
day = int(date[2])
days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year % 4 == 0and year % 100 != 0) or year % 400 == 0:
days[2] += 1
total = 0
for i inrange(month):
total += days[i]
total += day
print(total)
这个练习特别好,因为它不是孤零零地考一个点。
它把字符串拆分、类型转换、列表、分支判断、循环累加全都连了起来。
也就是写到这里,我第一次真的有一种感觉:
前面学过的那些内容,终于不再是一节一节分开的知识点了。
它们开始彼此连接,开始一起解决一个更完整的问题。
最后
如果让我用现在这套眼光回头看这一段,我会说:
真正带来变化的,不只是我多认识了几种数据类型。
而是我第一次开始理解,程序处理的从来不只是“一个值”,它处理的是一组信息、一个结构、一个被整理过的世界。
也正是从这里开始,我会更清楚地意识到:
写代码,不只是算和判断。
很多时候,它更像是在问你,准备怎样安放这些信息。
🌷🌷🌷
如果你也刚学到这一段,哪个容器最让你有“终于顺了”的感觉?
是列表的收纳感,字典的字段感,集合的去重,还是字符串终于也能被认真处理的那一刻?