Python——第2章 数据类型、运算符与内置函数
赋值语句
格式:变量名=数据
1 | x=2 |
数据类型
整数类型、字符串类型、列表类型
常用内置数据类型
整数、实数、复数
1 | import math |
列表、元组、字典、集合
列表、元组、字典、集合是Python内置的容器对象。
1 | # 创建列表对象 |
字符串
在字符串前面加上英文字母r或R表示原始字符串,其中每个字符都表示字母含义,不再进行转义。如果字符串中含有反斜线“\”,建议在字符串前面直接加上字母r使用原始字符串。
1 | text = '''Beautiful is better than ugly. |
运算符与表达式
算术运算符
(1)+运算符
+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接。
1 | print(3 + 5) |
(2)-运算符
-运算符除了用于整数、实数、复数之间的算术减法和相反数之外,还可以计算集合的差集。需要注意的是,在进行实数之间的运算时,有可能会出现误差。
1 | print(7.9 - 4.5) # 注意,结果有误差 |
(3)*运算符
*运算符除了表示整数、实数、复数之间的算术乘法,还可用于列表、元组、字符串这几个类型的对象与整数的乘法,表示序列元素的重复,生成新的列表、元组或字符串。
1 | print(33333 * 55555) |
(4)运算符/和//
在Python中分别表示真除法和求整商。在使用时,要特别注意整除运算符//“向下取整”的特点。例如,-17 / 4的结果是-4.25,在数轴上小于-4.25的最大整数是-5,所以-17 // 4的结果是-5。
1 | print(17 / 4) |
(5)%运算符
%运算符可以用于求余数运算,还可以用于字符串格式化。在计算余数时,结果与%右侧的运算数符号一致。
1 | print(365 % 7) |
*(6)*运算符
运算符表示幂运算。使用时应注意,该运算符具有右结合性,也就是说,如果有两个连续的运算符,那么先计算右边的再计算左边的,除非使用圆括号明确修改表达式的计算顺序。
1 | print(2 ** 4) |
关系运算符
1 | print(3+2 < 7+8) # 关系运算符优先级低于算术运算符 |
成员测试运算符
1 | print(60 in [70, 60, 50, 80]) |
集合运算符
1 | A = {35, 45, 55, 65, 75} |
逻辑运算符
计算结果只要不是0、0.0、0j、None、False、空列表、空元组、空字符串、空字典、空集合、空range对象或其他空的容器对象,都被认为等价于True。
1 | print(3 in range(5) and 'abc' in 'abcdefg') |
常用内置函数
在Python程序中,可以直接使用内置函数,不需要导入任何模块。
使用语句print(dir(builtins))可以查看所有内置函数和内置对象,注意builtins两侧各有两个下划线,一共4个。
类型转换
(1)int()、float()、complex()
1 | print(int(3.5)) # 获取实数的整数部分 |
(2)bin()、oct()、hex()
1 | print(bin(8888)) # 把整数转换为二进制 |
(3)ord()、chr()、str()
1 | print(ord('a')) # 返回字符的ASCII码 |
(4)list()、tuple()、dict()、set()
1 | print(list(), tuple(), dict(), set()) |
(5)eval()
- 计算字符串或字节串的值
- 实现类型转换的功能
- 还原字符串中数据的实际类型
1 | print(eval('3+4j')) # 对字符串求值得到复数 |
最大值、最小值
1 | data = [3, 22, 111] |
元素数量、求和
1 | data = [1, 2, 3, 4] |
排序、逆序
(1)sorted
sorted()可以对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表,支持使用key参数指定排序规则,key参数的值可以是函数、类、lambda表达式、方法等可调用对象。
另外,还可以使用reverse参数指定是升序(reverse=False)排序还是降序(reverse=True) 排序,如果不指定的话默认为升序排序。
1 | from random import shuffle |
(2)reversed
reversed()可以对可迭代对象(生成器对象和具有惰性求值特性的zip、map、filter、enumerate、reversed等类似对象除外)进行翻转并返回可迭代的reversed对象。
在使用时应注意,reversed对象具有惰性求值特点,其中的元素只能使用一次,并且不支持使用内置函数len()计算元素个数,也不支持使用内置函数reversed()再次翻转。
1 | from random import shuffle |
基本输入输出
(1)内置函数input
内置函数input()用来接收用户的键盘输入,不论用户输入什么内容,input()一律作为字符串对待,必要的时候可以使用内置函数int()、float()或eval()对用户输入的内容进行类型转换。
1 | num = int(input('请输入一个大于2的自然数:')) |
(2)内置函数print
内置函数print()用于以指定的格式输出信息,语法格式为:
print(value1, value2, …, sep=’ ‘, end=’\n’)
其中,sep参数之前为需要输出的内容(可以有多个);sep参数用于指定数据之间的分隔符,如果不指定则默认为空格;end参数表示输出完所有数据之后的结束符,如果不指定则默认为换行符。
1 | print(1, 2, 3, 4, 5) # 默认情况,使用空格作为分隔符 |
range()
range([start,] stop [,step])
其中,参数start默认为0,step默认为1,左开右闭区间[start,stop)
- range(stop)
- range(start,stop)
- range(start,stop,step)
1 | range1 = range(4) # 只指定stop为4,start默认为0,step默认为1 |
zip()
zip()用来把多个可迭代对象中对应位置上的元素分别组合到一起,返回一个可迭代的zip对象,其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。
zip对象中的每个元素只能使用一次,访问过的元素不可再次访问,并且只能从前往后逐个访问zip对象中的元素,不能使用下标直接访问指定位置上的元素。
1 | data = zip('1234', [1, 2, 3, 4, 5, 6]) |
map()、reduce()、filter()
(1)map()
map(func,*iterables)
map()函数把一个可调用对象func 依次映射到序列的每个元素上,并返回一个可选代的 map对象,其中每个元素是原序列中元素经过可调用对象func处理后的结果,该函数不对原序列做任何修改。 该函数返回的map对象可以转换为列表、元组或集合,也可以直接使用for 循环遍历其中的元素, 但是map对象中的每个元素只能使用一次。
1 | from operator import add |
(2)reduce()
reduce(func,seq[,initial])
reduce()可以将一个接收2个参数的函数以迭代的方式从左到右依次作用到一个序列或可迭代对象的所有元素上,并且每一次计算的中间结果直接参与下一次计算,最终得到一个值。
1 | from functools import reduce |
(3)filter()
filter(func or None, iterable)
过滤。将一个函数func作用到一个序列上,返回一个filter对象,其中包含原序列中使得函数func返回值等价于True的那些元素。每个元素只能使用一次。
1 | seq = ['abcd', '1234', '.,?!', ''] |
来自书籍:《Python数据分析、挖掘与可视化》