Python编程学习笔记1.0
《Python编程》学习笔记1.0
python作为大一的学生,虽然面临从早到晚的各种课程(水课),但是我还想好好学一次Python。
说实话,我不是零基础的。以前学过一点C,还在大一上学期学了一点Python的网络课程。但由于我当时“人心不足蛇吞象”,竟然妄想将更高级的一些课程一起学完,例如Python机器学习和全栈开发……
最后可想而知,在社团、课程考试以及一次性学这么多门课的疲惫之下,我……花了半期却没取得什么成果……
但是A站都可以说出“I'll be back!”,我也不会就这么自我放弃,决心扎实地深入学习。
担心枯燥的内容难以坚持下来,我就希望通过写博客的方式督促自己复习和学习,一有空就更新博客。很多大牛通过更新自己的网站或更新博文的方式传播技能知识,令我深受启发。比如廖雪峰老师。而这也是我第一次用这种方式学习一门知识,对于自己来说是一种全新的体验,也可以作为学习笔记,日后也留有足迹。我的学习资料暂定为 《Python编程(第四版上册)》。
python编程如果有新手看到此文章,希望只当参考中的参考,我们可以共同学习和进步。如有错误,还请大家指正!
准备工作
我使用的是Windows64bit系统,选择的文本编辑器是Python自带的IDLE,对新手友好,既有交互式界面,也可以Ctrl + N 创建新文件,F5运行。
IDLE
本章程序任务
构建一个Python类实例的保存记录的数据库,它可以通过多种界面对其进行访问和修改。
通过以下步骤进行迁移:
- 交互式编程
- 命令行工具
- 控制台界面
- GUI
- 简单的网页界面
涉及到:
- 数据表示
- 对象持久化
- 面向对象编程(OOP)
本章目的
不是为了让我们深入了解Python,而是通过一个应用实例来向我们展示使用Python编程的总体目标。
第一步:表示记录
如果我们要在数据库中存储记录。首要步骤就是确定以什么样的形式表示这些记录,为此,我们通常使用诸如列表和字典这样的内建对象类型。特别是我们并不关心如何处理数据的时候。
1.使用List
l列表使用位置排序的方式收集人们的信息,也就是说,列表中的数据是有序排列的。
输入以下的语句,假设这是我们要保存的数据记录。每条记录是四个属性的列表:姓名,年龄,薪水,工作领域。
>>> bob = ['Bob Smith', 42, 30000, 'software']
>>> sue = ['Sue Jones', 45, 40000, 'hardware']
要访问它们,需要通过指定位置进行索引,或是切片,或是迭代。
>>> bob[0], sue[2] # 访问记录项, 获取姓名和薪水
('Bob Smith', 40000) # 访问多个元素以逗号隔开,是元组形式
处理这些记录很简单,只需使用列表操作就可以了。
>>> bob[0].split()[-1] # 以空格来分割姓名字段,获取最后的部分,得到bob姓什么
'Smith'
>>> sue[2] *= 1.25 # 通过改变薪水在列表中的相应字段来给给sue加薪25%,并更新数据
>>> sue
['Sue Jones', 45, 50000.0, 'hardware']
2.数据库列表
上面做的不过是创建了两个变量罢了,离数据库还差了十万八千里呢。
为了能够统一使用这两条记录,而非次次获取姓名……时都一个个的查询,我们要有一个数据容器来装下它们。
没错,Python中的列表和字典就是这种容器。这里为了把Bob和Sue存在一起,我们要使用列表的嵌套,把他们放到一个新列表里面。
>>> people = [bob, sue] # 应用列表的列表
>>> for person in people:
print(person)
['Bob Smith', 42, 30000, 'software']
['Sue Jones', 45, 50000.0, 'hardware']
Good job,现在我们获取了一个微型的数据库列表people!
现在我们可以通过它们的相对位置来获取特定记录,或是通过循环一次处理一条记录,以达到一次性处理多条数据的目标。
虽然它仍然离真正的数据库差很远,但我们已经可以查询(多条)数据、写入数据和处理(多条)数据了。
>>> people[1][0] # sue 的姓名
'Sue Jones'
>>> for person in people:
print(person[0].split()[-1]) # 打印姓氏
person[2] *= 1.20 # 涨25%的薪水
Smith
Jones
>>> for person in people:print(person[2]) # 检查新的薪酬
36000.0
60000.0
为了向这个数据库中添加记录,使用append和extend这样通常的列表操作就足够了。
>>> people.append(['Tom',50,0,None])
>>> len(people) # 检查数据库中的数据条数
3
>>> people[-1][0], people[2][0] # 列表可以正向也可以反向查询,结果一样。
('Tom', 'Tom')
python中的len()对字符串使用时会返回其长度,对列表使用时会返回列表的元素个数,对列表的列表使用时会返回其表层的元素个数。
python中列表操作的append和extend似同实异,差别比较很重要,这里简单说一下,以后有时间再详细分析。
- list.append(object) 向列表中添加一个对象object
- list.extend(sequence) 把一个序列seq的内容添加到列表中
>>> music = ['compact disc', '8-track tape', 'long playing record']
>>> new_music = ['DVD Audio disc', 'Super Audio CD']
>>> music.append(new_music)
>>> print(music)
['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']]
使用append的时候,是将new_music看作一个对象,整体打包添加到music对象中。
>>> music = ['compact disc', '8-track tape', 'long playing record']
>>> new_music = ['DVD Audio disc', 'Super Audio CD']
>>> music.extend(new_music)
>>> print(music)
['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']
使用extend的时候,是将new_music看作一个序列,将这个序列和music序列合并,并放在其结尾。
所以,append固然可以添加单个元素到列表结尾,但要一次性添加多个元素时还是用extend更加省力。
image列表基本操作和方法
这里是针对列表基本操作的总结,以后也可轻松查阅
列表操作符 | 操作符含义 |
---|---|
< list1 > + < list2> | 连接两个列表 |
< list > * < 整数类型> | 对列表中的元素进行整数次重复 |
< list > [< 整数类型>] | 索引列表中的元素 |
len( < seq > ) | 列表中元素个数 |
< list >[ < 整数类型> : < 整数类型>] | 取列表的一个子序列 |
for < var > in < list > : | 对列表进行循环列举 |
< expr > in < list > | 成员检查,判断<expr>是否在列表中 |
方法 | 方法含义 |
---|---|
< list > . append ( x ) | 将元素x增加到列表的最后 |
< list > . extend ( list< x > ) | 把一个序列x的内容添加到列表中 |
< list > . sort ( ) | 将列表元素排序 |
< list > . reverse ( ) | 将序列元素反转 |
< list > . index ( ) | 返回第一次出现元素x的索引值 |
< list > . insert ( i, x ) | 在位置i处插入新元素x |
< list > . count ( x ) | 返回元素x在列表中的数量 |
< list > . remove ( x ) | 删除列表中第一次出现的元素x |
< list > . pop ( i ) | 取出列表中位置i的元素,并删除它,无指定的数时默认从最后一位开始抽出 |