最近在看剑指offer,原书都是用C++实现的,考虑用Python实现一遍所有问题答案。由于牛客网有剑指offer的在线评测,所以本文所有代码都基于牛客网上的问题(可能会和原书题目描述不同)实现。
Python3数值取整的几种方法(向上取整,向下取整,四舍五入)
内置函数
int()
,向0取整。
内置函数round()
,四舍五入取整。math
模块中的math.floor()
向下取整,math.ceil()
向上取整。
Python文件内容按行读取到列表中
以文件somefile.txt
为例,内容如下:
通常来讲,我们如果只是迭代文件对象每一行,并做一些处理,是不需要将文件对象转成列表的,因为文件对象本身可迭代,而且是按行迭代:
Python按行读取文件内容并得到当前行号
假设要读取的文件somefile.txt
内容如下:
不止要按行读取文件内容,还要得到当前行号。方法如下:
文件对象是可迭代的(按行迭代),使用enumerate()
即可在迭代的同时,得到数字索引(行号)。
详解Python3中range()用法
在Python3中,range实际上是不可改变的序列类型,返回的range对象是迭代器,参数只能为整数,通常用在for循环中循环指定的次数。有两种构造方法:
class range(stop)
class range(start, stop[, step])
Python合并两个字典成一个新字典的几种方法分析比较
两个字典如下:
合并后的结果如下(即,key相同时后面字典值覆盖前面字典):
Python矩阵转置方法(二维列表行列互换)
有列表如下:
转置(行列互换)后的结果如下:
详解Python字典方法keys()、values()、items()返回的视图对象
在Python3中dict.keys()
、dict.values()
、dict.items()
返回的都是视图对象,而不在是列表。视图对象可以看做是对字典开放的一个窗口,可以动态的反应字典的变化,也就是字典所做的改动在视图对象上都动态体现出来。
Python在for、while和try语句中else子句的使用
Python提供了一种很多编程语言都不支持的功能,那就是:else子句不仅能在if语句中使用,还能在for、while、和try语句中使用。for/else
、while/else
和try/else
的语义关系紧密,不过与if/else
差别很大。
Python反转序列(列表、元组、字符串)的几种方法
使用reversed(seq)内置函数
reversed(seq)是将序列(seq)反转,返回一个迭代器。