Python编程学习笔记1.0

2018-03-11  本文已影响0人  myRealization

《Python编程》学习笔记1.0

python

作为大一的学生,虽然面临从早到晚的各种课程(水课),但是我还想好好学一次Python。

说实话,我不是零基础的。以前学过一点C,还在大一上学期学了一点Python的网络课程。但由于我当时“人心不足蛇吞象”,竟然妄想将更高级的一些课程一起学完,例如Python机器学习和全栈开发……

最后可想而知,在社团、课程考试以及一次性学这么多门课的疲惫之下,我……花了半期却没取得什么成果……

但是A站都可以说出“I'll be back!”,我也不会就这么自我放弃,决心扎实地深入学习。

担心枯燥的内容难以坚持下来,我就希望通过写博客的方式督促自己复习和学习,一有空就更新博客。很多大牛通过更新自己的网站或更新博文的方式传播技能知识,令我深受启发。比如廖雪峰老师。而这也是我第一次用这种方式学习一门知识,对于自己来说是一种全新的体验,也可以作为学习笔记,日后也留有足迹。我的学习资料暂定为 《Python编程(第四版上册)》。

python编程

如果有新手看到此文章,希望只当参考中的参考,我们可以共同学习和进步。如有错误,还请大家指正!


准备工作

我使用的是Windows64bit系统,选择的文本编辑器是Python自带的IDLE,对新手友好,既有交互式界面,也可以Ctrl + N 创建新文件,F5运行。


IDLE

本章程序任务

构建一个Python类实例的保存记录的数据库,它可以通过多种界面对其进行访问和修改。
通过以下步骤进行迁移:

涉及到:

本章目的

不是为了让我们深入了解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似同实异,差别比较很重要,这里简单说一下,以后有时间再详细分析。

>>> 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的元素,并删除它,无指定的数时默认从最后一位开始抽出
上一篇下一篇

猜你喜欢

热点阅读