导图社区 python 程序设计
*运算符除了表示算术乘法,还可用于列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列。
编辑于2022-05-13 23:24:28工程中的创意是新颖和独创的设想或工程问题解决方案,能产生与众不同的创意是创新型人才的特点。《工程中的创意产生过程与方法》以创意产生的过程为主线编写,包括创意产生的心理学基础、创新思维、问题发现与解决、创意产生案例等。为了适应创业的需求,《工程中的创意产生过程与方法》还加入了商业模式创新的内容。
工程中的创意是新颖和独创的设想或工程问题解决方案,能产生与众不同的创意是创新型人才的特点。《工程中的创意产生过程与方法》以创意产生的过程为主线编写,包括创意产生的心理学基础、创新思维、问题发现与解决、创意产生案例等。为了适应创业的需求,《工程中的创意产生过程与方法》还加入了商业模式创新的内容。
嵌入式 Linux操作系统前四章总结,包括嵌入式系统基础、Linux下的C语言编程、嵌入式应用程序设计、基于Linux的嵌入式软件开发。
社区模板帮助中心,点此进入>>
工程中的创意是新颖和独创的设想或工程问题解决方案,能产生与众不同的创意是创新型人才的特点。《工程中的创意产生过程与方法》以创意产生的过程为主线编写,包括创意产生的心理学基础、创新思维、问题发现与解决、创意产生案例等。为了适应创业的需求,《工程中的创意产生过程与方法》还加入了商业模式创新的内容。
工程中的创意是新颖和独创的设想或工程问题解决方案,能产生与众不同的创意是创新型人才的特点。《工程中的创意产生过程与方法》以创意产生的过程为主线编写,包括创意产生的心理学基础、创新思维、问题发现与解决、创意产生案例等。为了适应创业的需求,《工程中的创意产生过程与方法》还加入了商业模式创新的内容。
嵌入式 Linux操作系统前四章总结,包括嵌入式系统基础、Linux下的C语言编程、嵌入式应用程序设计、基于Linux的嵌入式软件开发。
python 程序设计
序列结构
列表:打了激素的数组
列表(list)是最重要的Python内置对象之一,是包含若干元素的有序连续内存空间。当列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证相邻元素之间没有缝隙。Python列表的这个内存自动管理功能可以大幅度减少程序员的负担,但插入和删除非尾部元素时涉及到列表中大量元素的移动,会严重影响效率。
在非尾部位置插入和删除元素时会改变该位置后面的元素在列表中的索引,这对于某些操作可能会导致意外的错误结果。
除非确实有必要,否则应尽量从列表尾部进行元素的追加与删除操作。
列表创建与删除
使用“=”直接将一个列表赋值给变量即可创建列表对象。
也可以使用list()函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换为列表。
当一个列表不再使用时,可以使用del命令将其删除,这一点适用于所有类型的Python对象。
列表元素访问
创建列表之后,可以使用整数作为下标来访问其中的元素,其中0表示第1个元素,1表示第2个元素,2表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中-1表示最后1个元素,-2表示倒数第2个元素,-3表示倒数第3个元素,以此类推。
列表常用方法
append()、insert()、extend()
append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素,extend()用于将另一个列表中的所有元素追加至当前列表的尾部。这3个方法都属于原地操作,不影响列表对象在内存中的起始地址。
pop()、remove()、clear()
pop()用于删除并返回指定位置(默认是最后一个)上的元素;remove()用于删除列表中第一个值与指定值相等的元素;clear()用于清空列表中的所有元素。这3个方法也属于原地操作。另外,还可以使用del命令删除列表中指定位置的元素,同样也属于原地操作。
count()、index()
列表方法count()用于返回列表中指定元素出现的次数;index()用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常
sort()、reverse()
列表对象的sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。
列表对象支持的运算符
加法运算符+也可以实现列表增加元素的目的,但不属于原地操作,而是返回新列表,涉及大量元素的复制,效率非常低。使用复合赋值运算符+=实现列表追加元素时属于原地操作,与append()方法一样高效。
乘法运算符*可以用于列表和整数相乘,表示序列重复,返回新列表。运算符*=也可以用于列表元素重复,属于原地操作。
成员测试运算符in可用于测试列表中是否包含某个元素,查询时间随着列表长度的增加而线性增加,而同样的操作对于集合而言则是常数级的。
内置函数对列表的操作
max()、min()函数用于返回列表中所有元素的最大值和最小值,
sum()函数用于返回列表中所有元素之和;
len()函数用于返回列表中元素个数,zip()函数用于将多个列表中元素重新组合为元组并返回包含这些元组的zip对象;
enumerate()函数返回包含若干下标和值的迭代对象;map()函数把函数映射到列表上的每个元素,filter()函数根据指定函数的返回值对列表元素进行过滤;
all()函数用来测试列表中是否所有元素都等价于True,any()用来测试列表中是否有等价于True的元素。
标准库functools中的reduce()函数以及标准库itertools中的compress()、groupby()、dropwhile()等大量函数也可以对列表进行操作。
运算符、表达式与内置对象
对象是python语言中最基本的概念,在python中处理的一切都是对象。
python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等。
非内置对象需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random( )等。
常用内置对象
常量与变量
在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。这一点适用于Python任意类型的对象。
赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值存放进去,最后创建变量并指向这个内存地址。
Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。
在定义变量名的时候,需要注意以下问题:
变量名必须以字母或下划线开头,但以下划线开头的变量在Python中有特殊含义
变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等等)
不能使用关键字作变量名,可以导入keyword模块后使用print(keyword.kwlist)查看所有Python关键字
变量名对英文字母的大小写敏感,例如student和Student是不同的变量
不建议使用系统内置的模块名、类型名或函数名以及已导入的模块名及其成员名作变量名,这将会改变其类型和含义,可以通过dir(__builtins__)查看所有内置模块、类型和函数
算术运算符
运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间相加或连接。
*运算符除了表示算术乘法,还可用于列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。
运算符/和//在Python中分别表示算术除法和算术求整商(floor division)。
%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化,但是这种用法并不推荐。
**运算符表示幂乘
关系运算符
Python关系运算符最大的特点是可以连用,其含义与我们日常的理解完全一致。使用关系运算符的一个最重要的前提是,操作数之间必须可比较大小。例如把一个字符串和一个数字进行大小比较是毫无意义的,所以Python也不支持这样的运算。
成员测试运算符in与同一性测试运算符is
成员测试运算符in用于成员测试,即测试一个对象是否为另一个对象的元素。
同一性测试运算符is用来测试两个对象是否是同一个,如果是则返回True,否则返回False。如果两个对象是同一个,二者具有相同的内存地址。
位运算符与集合运算符
位运算符只能用于整数,其内部执行过程为:首先将整数转换为二进制数,然后右对齐,必要的时候左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。
位与运算规则为1&1=1、1&0=0&1=0&0=0,位或运算规则为1|1=1|0=0|1=1、0|0=0,位异或运算规则为1^1=0^0=0、1^0=0^1=1。
左移位时右侧补0,每左移一位相当于乘以2;右移位时左侧补0,每右移一位相当于整除以2。
集合的交集、并集、对称差集等运算借助于位运算符来实现,而差集则使用减号运算符实现(注意,并集运算符不是加号)。
类型转换与类型判断
内置函数bin()、oct()、hex()用来将整数转换为二进制、八进制和十六进制形式,这三个函数都要求参数必须为整数。
内置函数int()用来将其他形式的数字转换为整数,参数可以为整数、实数、分数或合法的数字字符串。当参数为数字字符串时,还允许指定第二个参数base用来说明数字字符串的进制,base的取值应为0或2-36之间的整数,其中0表示按数字字符串隐含的进制进行转换。
内置函数float()用来将其他类型数据转换为实数,complex()可以用来生成复数。
ord()和chr()是一对功能相反的函数,ord()用来返回单个字符的Unicode码,而chr()则用来返回Unicode编码对应的字符,str()则直接将其任意类型参数转换为字符串。
内置类ascii可以把对象转换为ASCII码表示形式,必要的时候使用转义字符来表示特定的字符。
内置类bytes用来生成字节串,或者把指定对象转换为特定编码的字节串。
list()、tuple()、dict()、set()、frozenset()用来把其他类型的数据转换成为列表、元组、字典、可变集合和不可变集合,或者创建空列表、空元组、空字典和空集合。
内置函数type()和isinstance()可以用来判断数据类型,常用来对函数参数进行检查,可以避免错误的参数类型导致函数崩溃或返回意料之外的结果。
最值与求和
max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他包含有限个元素的可迭代对象中所有元素最大值、最小值以及所有元素之和
sum()默认(可以通过start参数来改变)支持包含数值型元素的序列或可迭代对象,max()和min()则要求序列或可迭代对象中的元素之间可比较大小
函数max()和min()还支持default参数和key参数,其中default参数用来指定可迭代对象为空时默认返回的最大值或最小值,而key参数用来指定比较大小的依据或规则,可以是函数或lambda表达式。函数sum()还支持start参数,用来控制求和的初始值
基本输入输出
input()和print()是Python的基本输入输出函数,前者用来接收用户的键盘输入,后者用来把数据以指定的格式输出到标准控制台或指定的文件对象。不论用户输入什么内容,input()一律返回字符串对待,必要的时候可以使用内置函数int()、float()或eval()对用户输入的内容进行类型转换。
内置函数print()用于输出信息到标准控制台或指定文件,语法格式为:
print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
sep参数之前为需要输出的内容(可以有多个)
sep参数用于指定数据之间的分隔符,默认为空格
end参数用于指定输出完数据之后再输出什么字符
file参数用于指定输出位置,默认为标准控制台,也可以重定向输出到文件。
排序和逆序
sorted()对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表,reversed()对可迭代对象(生成器对象和具有惰性求值特性的zip、map、filter、enumerate等类似对象除外)进行翻转(首尾交换)并返回可迭代的reversed对象。
枚举和迭代
enumerate()函数用来枚举可迭代对象中的元素,返回可迭代的enumerate对象,其中每个元素都是包含索引和值的元组
map()、reduce()、filter()
内置函数map()把一个函数func依次映射到序列或迭代器对象的每个元素上,并返回一个可迭代的map对象作为结果,map对象中每个元素是原序列中元素经过函数func处理后的结果。
内置函数filter()将一个单参数函数作用到一个序列上,返回该序列中使得该函数返回值为True的那些元素组成的filter对象,如果指定函数为None,则返回序列中等价于True的元素。
range()
range()是Python开发中非常常用的一个内置函数,语法格式为range([start,] end [, step] ),有range(stop)、range(start, stop)和range(start, stop, step)三种用法。该函数返回具有惰性求值特点的range对象,其中包含左闭右开区间[start,end)内以step为步长的整数。参数start默认为0,step默认为1
zip()
zip()函数用来把多个可迭代对象中的元素压缩到一起,返回一个可迭代的zip对象,其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组,如同拉拉链一样