本篇将从简单的变量配置,以及常见内置对象的使用,如变量类型强制转换,还有简单的运算符使用,其中本篇重点部分在于排序与逆序的内置对象选择。
一、部分内置对象
数字:支持数学式计算,也支持复数运算
字符串:以单、双、三引号为定界符,我们可以利用不同的定界符进行嵌套,达到我们想要表达的效果。字符串也属于是序列结构,不过为啥把他单拎出来,因为其过于简单,而且前期一些简单函数肯定会用到。
print("他说:'你好'")
序列结构:包含列表、元组、字典、集合、字符串,序列结构的知识点琐碎,我们在下一节“Python序列结构”中去详细讲,这里就简单介绍一下内容,不再过多说明。
布尔值:作为进行判断等操作的重要依据,布尔值只有True和Flase,如果用数字常量去判断布尔值时,如果数字常量不为0,则都会返回True,为0则返回Flase。
空类型:一种特殊的类型,空值,用None表示。
其他可迭代对象:迭代器对象和生成器对象等,常见的迭代器对象有一些函数,例如zip()这种能够对可迭代对象进行操作的函数,通过__iter__()方法和__next__()方法进行操作,之后再细说;而生成器对象使用生成器表达式,利用关键字yield进行返回值操作。在这里,我们简单介绍一下可迭代对象、迭代器对象和生成器对象三者的关系,如图。
二、常量与变量
我们在代码语句中,所使用的常量,没有存储空间,也就代表这这个常量无法改变,我们无法把一个数字赋值给数字。
然而在使用过程中我们定义的变量,可以进行多次赋值,在使用过程中区分大小写,变量A和变量a是不同的变量,定义变量时也要遵循Python中对定义变量的要求:
①变量名中只能含有字母、数字、下划线
②数字不能在变量名开头
③不能是关键字
三、Python运算符
算术运算符:“ +-*\ ”加减乘除就不用多说了,讲几个特殊的运算符。“ ** ”表示幂运算,“ // ”表示除完取整(向下取整)假如说计算-15//4结果应该是-4。
关系运算符:特殊地,“ >= ”表示大于等于;“ <= ”表示小于等于;“ == ”表示等于。
成员测试运算符:in,当我们想知道a在不在列表alist时我们可以使用成员测试运算符。
print(a in alist)
逻辑运算符:
and(逻辑与),两者都为真(True),才为真(True),存在假(Flase)就为假(Flase);
or(逻辑或),两者中,一者为真(True),就为真(True),两者都为假(Flase)才为假(Flase);
not(逻辑非),取反,将真的(True)变成假的(Flase),将假的(Flase)变成真的(True)。
补充说明:
①Python中存在“ +=,*=,/= ”等运算符。
②Python与C语言不同,不存在“ ++,-- ”这种每次加一每次减一的运算符。
③海象运算符“ := ”,能够实现一条语句多次赋值。
四、类型转换
进制转换:bin()二进制;oct()八进制hex ;()十六进制;int()整型十进制,int()中第二个参数作用说明传入数值进制。
数值转换:eval()计算字符串的值,也可以类型转换。
字符与Unicode码:ord()返回单个字符的Unicode码,chr()返回Unicode码对应的字符。
序列结构转换:list()转化为列表;tuple()转化为元组;dict()转化为字典;set()转化为集合。
数据类型:type()查看数据类型,返回类型;isinstance()判断类型,返回布尔值。
五、最值求和
最值函数: 最大值函数max()、最小值函数min()。
求和函数:sum()函数参数可以是序列结构,也可以是一些语句。
六、输入与输出
输入:input()可以将传入的数据转化为字符串,当需要对输入的值进行操作时,需要eval()函数和int()函数进行转换。input()内部也可以放字符串,字符串会打印在屏幕上。
x = input(" 请输入 ")
输出:print()函数,能直接打印变量的值或者输出字符串。其中sep参数作为分隔符,默认为空格;end参数表示结束符默认为换行符。
七、排序与逆序
(一)排序
1.升序
方法:.sort()方法,对一个序列进行升序排序,这个方法的特点是原地更改,即在原有对象的基础上进行更改,不生成新的值。
函数:sorted(,reverse=False)创建新变量,这个函数不同于.sort()方法,不是在圆度更改,而是生成一个新值(升序后),即原有序列的值保持不变。
2.降序
降序只有一个函数就是sorted(,reverse=True)函数,它和升序的sorted()函数一样会生成新值(降序后),原有序列保持不变。
(二)取反
方法:.reverse()方法是一种常见的序列结构取反方法,原地更改,并不产生新的值。
函数:reversed()函数,使用这个序列结构取反函数,并不会在原有序列结构上更改,会生成新值,当我们继续读取原序列结构时,原序列结构不变。
切片:切片取反只有列表这个序列结构可以使用,虽然元组也有切片,但元组的切片只用于读取,不能写入。列表[::-1]原地更改,不生成新值。列表切片取反执行更为迅速,是原地取反的不二选择。
八、常见函数
(一)enumerate()函数
enumerate()函数可枚举迭代器中的对象。
(二)reduce()函数
reduce()函数会将双参数函数以迭代方式从左到右依次作用到一个序列或迭代器对象的所有元素上。
reduce(lambda x,y:x+y,[1,2,3,4,5]
#计算逻辑为((((1+2)+3)+4)+5)
#lambda是一个简单的匿名函数,我们会在函数那一节讲到
(三) 迭代器对象
特点:
①有__iter__()方法和__next__()方法进行操作,__iter__()方法返回迭代器对象本身,__next__()方法获取迭代器对象的下一个元素。
②无法访问已经访问过的值。
x = zip('abc','1234')
print(list(x))#输出[('a','1'),('b','2'),('c','3')]
print(list(x))#输出[]
1. map()
map(a,b)将a函数映射到可迭代对象b上,对可迭代对象b中的元素进行操作。
map(add5,alist)
#列表alist中所有元素加五
2.zip()
两个可迭代对象中的元素,一对一组成元组放入列表中,以短的那个可替代带对象决定zip()函数的结束位置。
x = zip('abc','1234')
print(list(x))#输出[('a','1'),('b','2'),('c','3')]
3.filter()
过滤,将一个单参数函数作用到一个可迭代对象上,返回其中值等价于Ture的值。使用此函数是创建一个新的值,并不是在原列表上进行修改。
x=[1,0,3,0,1,False,True]
print(filter(x))#结果为[1,3,1,True]
print(x)#原列表不变[1,0,3,0,1,False,True]