• (教材)Python程序设计基础(第2版) 9787302490562
  • (教材)Python程序设计基础(第2版) 9787302490562
  • (教材)Python程序设计基础(第2版) 9787302490562
  • (教材)Python程序设计基础(第2版) 9787302490562
  • (教材)Python程序设计基础(第2版) 9787302490562
21年品牌 40万+商家 超1.5亿件商品

(教材)Python程序设计基础(第2版) 9787302490562

可开发票,支持7天无理由

19.83 4.0折 49 全新

仅1件

河北廊坊
认证卖家担保交易快速发货售后保障

作者董付国

出版社清华大学出版社

ISBN9787302490562

出版时间2021-11

装帧其他

开本16开

定价49元

货号B06ACB1F17304AE99EF

上书时间2024-02-18

果然是好书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
第1章  管中窥豹:Python概述
  1.1  Python是这样一种语言
  1.2  Python版本之争
  1.3  Python编程规范与代码优化建议
  1.4  Anaconda3开发环境的安装与使用
  1.5  安装扩展库的几种方法
  1.6  标准库与扩展库中对象的导入与使用
    1.6.1  import模块名[as 别名]
    1.6.2  from模块名import对象名[as别名]
    1.6.3  from模块名 import *
  1.7  __name__属性的作用
  本章小结
  习题
第2章  万丈高楼平地起:运算符、表达式与内置对象
  2.1  Python常用内置对象
    2.1.1  常量与变量
    2.1.2  数字
    2.1.3  字符串与字节串
    2.1.4  列表、元组、字典、集合
  2.2  Python运算符与表达式
    2.2.1  算术运算符
    2.2.2  关系运算符
    2.2.3  成员测试运算符in与同一性测试运算符is
    2.2.4  位运算符与集合运算符
    2.2.5  逻辑运算符
    2.2.6  矩阵乘法运算符@
    2.2.7  补充说明
  2.3  Python关键字简要说明
  2.4  Python常用内置函数用法精要
    2.4.1  类型转换与类型判断
    2.4.2  最值与求和
    2.4.3  基本输入输出
    2.4.4  排序与逆序
    2.4.5  枚举
    2.4.6  map()、reduce()、filter()
    2.4.7  range()
    2.4.8  zip()
    2.4.9  eval()
  2.5  精彩案例赏析
  本章小结
  习题
第3章  玄之又玄,众妙之门:详解Python序列结构
  3.1  列表:打了激素的数组
    3.1.1  列表创建与删除
    3.1.2  列表元素访问
    3.1.3  列表常用方法
    3.1.4  列表对象支持的运算符
    3.1.5  内置函数对列表的操作
    3.1.6  列表推导式语法与应用案例
    3.1.7  切片操作的强大功能

内容摘要
董付国编著的《Python程序设计基础(第2版计算机系列教材)》共13章:第1章介绍Python基本知识与概念,Python开发环境配置与使用,扩展库安装与使用;第2章讲解Python运算符与表达式以及内置函数的用法;第3章讲解列表、元组、字典、集合等序列结构的常用方法和基本操作;第4章讲解Python选择结构与循环结构的语法和应用;第5章讲解函数的定义与使用,不同类型的函数参数,变量的作用域以及lambda表达式;第6章讲解类的定义与实例化,多种不同类型的成员方法,特殊方法与运算符重载;第7章讲解字符串对象及其方法的应用;第8章讲解正则表达式语法以及正则表达式在Python中的应用;第9章讲解文件操作的基本知识与Python文件对象,文本文件内容读写,二进制文件操作与对象序列化;第10章讲解文件复制、移动、重命名、遍历等文件级操作以及目录操作有关知识;第11章讲解Python中多种不同形式的异常处理结构;第12章讲解Python对SQLite以及Access、MSSQLServer、MySQL等不同数据库的操作;第13章讲解数据分析、数据处理、数据可视化以及科学计算的有关知识。
本书完全面向Python3.x,全部案例代码使用Python3.5.x和Python3.6.x编写,大部分内容也
同样适用于Python3.4.x。本书对Python内部工作原理进行一定程度的剖析,并适当介绍了Python代码
优化和安全编程的有关知识,可以满足不同层次读者的需求。

精彩内容
第3章第3章玄之又玄,众妙之门:详解Python序列结构Python中常用的序列结构有列表、元组、字典、字符串、集合等(虽然有人并不主张把字典和集合看作序列,但这真的不重要)。从是否有序这个角度看,Python序列可以分为有序序列和无序序列;从是否可变来看,Python序列则可以分为可变序列和不可变序列两大类,如图31所示。另外,生成器对象和range、map、enumerate、filter、zip等对象的某些用法也类似于序列,尽管这些对象更大的特点是惰性求值。列表、元组、字符串等有序序列以及range对象均支持双向索引,第一个元素下标为0,第二个元素下标为1,以此类推;如果使用负数作为索引,则最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。可以使用负整数作为索引是Python有序序列的一大特色,熟练掌握和运用可以大幅度提高开发效率。
图31Python序列分类示意图3.1列表:打了激素的数组列表(list)是最重要的Python内置对象之一,是包含若干元素的有序连续内存空间。当列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证相邻元素之间没有缝隙。Python列表的这个内存自动管理功能可以大幅度减少程序员的负担,但插入和删除非尾部元素时涉及列表中大量元素的移动,会严重影响效率。另外,在非尾部位置插入和删除元素时会改变该位置后面的元素在列表中的索引,这对于某些操作可能会导致意外的错误结果。所以,除非确实有必要,否则应尽量从列表尾部进行元素的追加与删除操作。〖1〗〖2〗Python程序设计基础(第2版)〖1〗第3章玄之又玄,众妙之门:详解Python序列结构〖2〗在形式上,列表的所有元素放在一对方括号[]中,相邻元素之间使用逗号分隔。在Python中,同一个列表中元素的数据类型可以各不相同,可以同时包含整数、实数、字符串等基本类型的元素,也可以包含列表、元组、字典、集合、函数以及其他任意对象。如果只有一对方括号而没有任何元素则表示空列表。下面几个都是合法的列表对象:\\\\[10,20,30,40\\\\]\\\\[''crunchyfrog'',''rambladder'',''larkvomit''\\\\]\\\\[''spam'',2.0,5,\\\\[10,20\\\\]\\\\]\\\\[\\\\[''file1'',200,7\\\\],\\\\[''file2'',260,9\\\\]\\\\]\\\\[{3},{5:6},(1,2,3)\\\\]Python采用基于值的自动内存管理模式,变量并不直接存储值,而是存储值的引用或内存地址,这也是python中变量可以随时改变类型的重要原因。同理,Python列表中的元素也是值的引用,所以列表中各元素可以是不同类型的数据。
需要注意的是,列表的功能虽然非常强大,但是负担也比较重,开销较大,在实际开发中,最好根据实际的问题选择一种合适的数据类型,要尽量避免过多使用列表。
3.1.1列表创建与删除使用“=”直接将一个列表赋值给变量即可创建列表对象。>>>a_list=\\\\[''a'',''b'',''mpilgrim'',''z'',''example''\\\\]>>>a_list=\\\\[\\\\]#创建空列表也可以使用list()函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换为列表。需要注意的是,把字典转换为列表时默认是将字典的“键”转换为列表,而不是把字典的元素转换为列表,如果想把字典的元素转换为列表,需要使用字典对象的items()方法明确说明,当然也可以使用values()来明确说明要把字典的“值”转换为列表。>>>list((3,5,7,9,11))#将元组转换为列表\\\\[3,5,7,9,11\\\\]>>>list(range(1,10,2))#将range对象转换为列表\\\\[1,3,5,7,9\\\\]>>>list(''helloworld'')#将字符串转换为列表\\\\[''h'',''e'',''l'',''l'',''o'','''',''w'',''o'',''r'',''l'',''d''\\\\]>>>list({3,7,5})#将集合转换为列表\\\\[3,5,7\\\\]>>>list({''a'':3,''b'':9,''c'':78})#将字典的“键”转换为列表\\\\[''a'',''c'',''b''\\\\]>>>list({''a'':3,''b'':9,''c'':78}.items())#将字典的“键:值”对转换为列表\\\\[(''b'',9),(''c'',78),(''a'',3)\\\\]>>>x=list()#创建空列表当一个列表不再使用时,可以使用del命令将其删除,这一点适用于所有类型的Python对象。>>>x=\\\\[1,2,3\\\\]>>>delx#删除列表对象>>>x#对象删除后无法再访问,抛出异常NameError:name''x''isnotdefined3.1.2列表元素访问创建列表之后,可以使用整数作为下标来访问其中的元素,其中下标为0的元素表示第1个元素,下标为1的元素表示第2个元素,下标为2的元素表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中下标为-1的元素表示最后一个元素,下标为-2的元素表示倒数第2个元素,下标为-3的元素表示倒数第3个元素,以此类推,如图32所示(以列表[''P'',''y'',''t'',''h'',''o'',''n'']为例)。>>>x=list(''Python'')#创建列表对象>>>x\\\\[''P'',''y'',''t'',''h'',''o'',''n''\\\\]>>>x\\\\[0\\\\]#下标为0的元素,第一个元素''P''>>>x\\\\[-1\\\\]#下标为-1的元素,最后一个元素''n''图32双向索引示意图3.1.3列表常用方法列表、元组、字典、集合、字符串等Python序列有很多操作是通用的,而不同类型的序列又有一些特有的方法或者支持某些特有的运算符和内置函数。列表对象常用的方法如表31所示。续表表31列表对象常用的方法方法说明append(x)将x追加至列表尾部extend(L)将列表L中的所有元素追加至列表尾部insert(index,x)在列表index位置处插入x,该位置后面的所有元素后移并且在列表中的索引加1,如果index为正数且大于列表长度则在列表尾部追加x,如果index为负数且小于列表长度的相反数则在列表头部插入元素xremove(x)在列表中删除第一个值为x的元素,该元素之后所有元素前移并且索引减1,如果列表中不存在x则抛出异常pop(\\\\[index\\\\])删除并返回列表中下标为index的元素,如果不指定index则默认为-1,弹出最后一个元素;如果弹出中间位置的元素则后面的元素索引减1;如果index不是\\\\[-L,L)区间的整数则抛出异常,L表示列表长度clear()清空列表,删除列表中的所有元素,保留列表对象index(x)返回列表中第一个值为x的元素的索引,若不存在值为x的元素则抛出异常count(x)返回x在列表中的出现次数reverse()对列表所有元素进行原地逆序,首尾交换sort(key=None,reverse=False)对列表中的元素进行原地排序,key用来指定排序规则,reverse为False表示升序,True表示降序copy()返回列表的浅复制1.append()、insert()、extend()这3个方法都可以用于向列表对象中添加元素,其中append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素,extend()用于将另一个列表中的所有元素追加至当前列表的尾部。这3个方法都属于原地操作,不影响列表对象在内存中的起始地址。对于长列表而言,使用insert()方法在列表首部或中间位置插入元素时效率较低。如果确实需要在首部按序插入多个元素,可以先在尾部追加,然后使用reverse()方法进行翻转,或者考虑使用标准库collections中的双端队列deque对象提供的appendleft()方法。>>>x=\\\\[1,2,3\\\\]>>>id(x)#查看对象的内存地址
50159368>>>x.append(4)#在尾部追加元素>>>x.insert(0,0)#在指定位置插入元素>>>x.extend(\\\\[5,6,7\\\\])#在尾部追加多个元素>>>x\\\\[0,1,2,3,4,5,6,7\\\\]>>>id(x)#列表在内存中的地址不变501593682.pop()、remove()、clear()这3个方法用于删除列表中的元素,其中pop()用于删除并返回指定位置(默认是最后一个)上的元素,如果指定的位置不是合法的索引则抛出异常,对空列表调用pop()方法也会抛出异常;remove()用于删除列表中第一个值与指定值相等的元素,如果列表中不存在该元素则抛出异常;clear()用于清空列表中的所有元素。这3个方法也属于原地操作,不影响列表对象的内存地址。另外,还可以使用del命令删除列表中指定位置的元素,这个方法同样也属于原地操作。>>>x=\\\\[1,2,3,4,5,6,7\\\\]>>>x.pop()#弹出并返回尾部元素7>>>x.pop(0)#弹出并返回指定位置的元素1>>>x.clear()#删除所有元素>>>x\\\\[\\\\]>>>x=\\\\[1,2,1,1,2\\\\]>>>x.remove(2)#删除首个值为2的元素>>>delx\\\\[3\\\\]#删除指定位置上的元素>>>x\\\\[1,1,1\\\\]必须强调的是,由于列表具有内存自动收缩和扩张功能,在列表中间位置插入或删除元素时,不仅效率较低,而且该位置后面所有元素在列表中的索引也会发生变化,必须牢牢记住这一点。
3.count()、index()列表方法count()用于返回列表中指定元素出现的次数;index()用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常。>>>x=\\\\[1,2,2,3,3,3,4,4,4,4\\\\]>>>x.count(3)#元素3在列表x中的出现次数3>>>x.count(5)#不存在,返回00>>>x.index(2)#元素2在列表x中首次出现的索引1>>>x.index(5)#列表x中没有5,抛出异常ValueError:5isnotinlist通过前面的介绍我们已经知道,列表对象的很多方法在特殊情况下会抛出异常,而一旦出现异常,整个程序就会崩溃,这是我们不希望的。为避免引发异常而导致程序崩溃,一般来说有两种方法:①使用选择结构确保列表中存在定元素再调用有关的方法;②使用异常处理结构。下面的代码使用异常处理结构保证用户输入的是三位数,然后使用关键字in来测试用户输入的数字是否在列表中,如果存在则输出其索引,否则提示不存在。fromrandomimportsamplelst=sample(range(100,1000),100)whileTrue:x=input(''请输入一个三位数:'')try:assertlen(x)==3,''长度必须为3''x=int(x)breakexcept:passifxinlst:print(''元素{0}在列表中的索引为:{1}''.format(x,lst.index(x)))else:print(''列表中不存在该元素.'')4.sort()、reverse()列表对象的sort()方法用于按照指定的规则对所有元素进行排序,默认规则是所有元素从小到大升序排序;reverse()方法用于将列表所有元素逆序或翻转,也就是第一个元素和倒数第一个元素交换位置,第二个元素和倒数第二个元素交换位置,以此类推。>>>x=list(range(11))#包含11个整数的列表>>>importrandom>>>random.shuffle(x)#把列表x中的元素随机乱序>>>x\\\\[6,0,1,7,4,3,2,8,5,10,9\\\\]>>>x.sort(key=lambdaitem:len(str(item)),reverse=True)#按转换成字符串以后的长度降序排列>>>x\\\\[10,6,0,1,7,4,3,2,8,5,9\\\\]>>>x.sort(key=str)#按转换为字符串后的大小升序排序>>>x\\\\[0,1,10,2,3,4,5,6,7,8,9\\\\]>>>x.sort()#按默认规则排序>>>x\\\\[0,1,2,3,4,5,6,7,8,9,10\\\\]>>>x.reverse()#把所有元素翻转或逆序>>>x\\\\[10,9,8,7,6,5,4,3,2,1,0\\\\]列表对象的sort()和reverse()分别对列表进行原地排序(inplacesorting)和逆序,没有返回值。所谓“原地”,意思是用处理后的数据替换原来的数据,列表首地址不变,列表中元素原来的顺序全部丢失。
如果不想丢失原来的顺序,可以使用2.4.4节介绍的内置函数sorted()和reversed()。其中,内置函数sorted()返回排序后的新列表,参数key和reverse的含义与列表方法sort()完全相同;内置函数reversed()返回一个逆序后的reversed对象。充分利用列表对象的sort()方法和内置函数sorted()的key参数,可以实现更加复杂的排序,以内置函数sorted()为例:>>>gameresult=\\\\[\\\\[''Bob'',95.0,''A''\\\\],\\\\[''Alan'',86.0,''C''\\\\],\\\\[''Mandy'',83.5,''A''\\\\],\\\\[''Rob'',89.3,''E''\\\\]\\\\]>>>fromoperatorimportitemgetter>>>sorted(gameresult,key=itemgetter(2))#按子列表第3个元素进行升序排序\\\\[\\\\[''Bob'',95.0,''A''\\\\],\\\\[''Mandy'',83.5,''A''\\\\],\\\\[''Alan'',86.0,''C''\\\\],\\\\[''Rob'',89.3,''E''\\\\]\\\\]>>>sorted(gameresult,key=itemgetter(2,0))#先按第3个元素升序并排列,再按第一个元素升序排序\\\\[\\\\[''Bob'',95.0,''A''\\\\],\\\\[''Mandy'',83.5,''A''\\\\],\\\\[''Alan'',86.0,''C''\\\\],\\\\[''Rob'',89.3,''E''\\\\]\\\\]>>>sorted(gameresult,key=itemgetter(2,0),reverse=True)\\\\[\\\\[''Rob'',89.3,''E''\\\\],\\\\[''Alan'',86.0,''C''\\\\],\\\\[''Mandy'',83.5,''A''\\\\],\\\\[''Bob'',95.0,''A''\\\\]\\\\]>>>list1=\\\\[\\\"what\\\",\\\"I''m\\\",\\\"sorting\\\",\\\"by\\\"\\\\]#以一个列表内容为依据>>>list2=\\\\[\\\"something\\\",\\\"else\\\",\\\"to\\\",\\\"sort\\\"\\\\]#对另一个列表内容进行排序>>>pairs=zip(list1,list2)#把两个列表中的对应位置元素配对>>>\\\\[item\\\\[1\\\\]foriteminsorted(pairs,key=lambdax:x\\\\[0\\\\],reverse=True)\\\\]\\\\[''something'',''to'',''sort'',''else''\\\\]>>>x=\\\\[\\\\[1,2,3\\\\],\\\\[2,1,4\\\\],\\\\[2,2,1\\\\]\\\\]>>>sorted(x,key=lambdaitem:(item\\\\[1\\\\],-item\\\\[2\\\\]))#以第2个元素升序#第3个元素降序排序#这里的负号只适用于数值型元素\\\\[\\\\[2,1,4\\\\],\\\\[1,2,3\\\\],\\\\[2,2,1\\\\]\\\\]>>>x=\\\\[''aaaa'',''bc'',''d'',''b'',''ba''\\\\]>>>sorted(x,key=lambdaitem:(len(item),item))#先按长度排序,长度一样的正常排序\\\\[''b'',''d'',''ba'',''bc'',''aaaa''\\\\]5.copy()列表对象的copy()方法返回列表的浅复制。所谓浅复制,是指生成一个新的列表,并且把原列表中所有元素的引用都复制到新列表中。如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。但是,如果原列表中包含列表之类的可变数据类型,由于浅复制时只是把子列表的引用复制到新列表中,于是修改任何一个都会影响另外一个。>>>x=\\\\[1,2,\\\\[3,4\\\\]\\\\]#原列表中包含子列表>>>y=x.copy()#浅复制>>>y#两个列表中的内容看起来完全一样\\\\[1,2,\\\\[3,4\\\\]\\\\]>>>y\\\\[2\\\\].append(5)#为新列表中的子列表追加元素>>>x\\\\[0\\\\]=6#整数、实数等不可变类型不受此影响>>>y.append(6)#在新列表尾部追加元素>>>y\\\\[1,2,\\\\[3,4,5\\\\],6\\\\]>>>x#原列表不受影响\\\\[6,2,\\\\[3,4,5\\\\]\\\\]列表对象的copy()方法和切片操作以及标准库copy中的copy()函数一样都是返回浅复制,如果想避免上面代码演示的问题,可以使用标准库copy中的deepcopy()函数实现深复制。所谓深复制,是指对原列表中的元素进行递归,把所有的值都复制到新列表中,对嵌套的子列表不再是复制引用。这样一来,新列表和原列表是互相独立,修改任何一个都不会影响另外一个。>>>importcopy>>>x=\\\\[1,2,\\\\[3,4\\\\]\\\\]>>>y=copy.deepcopy(x)#深复制>>>x\\\\[2\\\\].append(5)#为原列表中的子列表追加元素>>>y.append(6)#在新列表尾部追加元素>>>y\\\\[1,2,\\\\[3,4\\\\],6\\\\]>>>x\\\\[1,2,\\\\[3,4,5\\\\]\\\\]不论是浅复制还是深复制,与列表对象的直接赋值都是不一样的情况。下面的代码把同一个列表赋值给两个不同的变量,这两个变量是互相独立的,修改任何一个都不会影响另外一个。>>>x=\\\\[1,2,\\\\[

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP