Python内置函数——竞赛向
Python内置函数——竞赛向
文章目录
- Python内置函数——竞赛向
- 进制转换
- 数学相关
- a b s ( x ) abs(x) abs(x)
- d i v m o d ( a , b ) divmod(a, b) divmod(a,b)
- e v a l ( e x p r e s s i o n , g l o b a l s = N o n e , l o c a l s = N o n e ) eval(expression, globals=None, locals=None) eval(expression,globals=None,locals=None)
- m a x 、 m i n max、min max、min
- p o w ( b a s e , e x p , m o d = N o n e ) pow(base, exp, mod=None) pow(base,exp,mod=None)
- r o u n d ( n u m b e r , n d i g i t s = N o n e ) round(number, ndigits=None) round(number,ndigits=None)
- s u m ( i t e r a b l e , / , s t a r t = 0 ) sum(iterable, /, start=0) sum(iterable,/,start=0)
- math模块
- 组合和排列
- 编码转换
- 输出
- 生成迭代序列
- 排序
进制转换
c l a s s i n t ( x , b a s e = 10 ) class\ int(x, base=10) class int(x,base=10)
返回一个基于数字或字符串 x 构造的整数对象,或者在未给出参数时返回 0。如果 x 定义了 _int_(),int(x) 将返回 x._int_()。 如果 x 定义了 _index_(),它将返回 x._index_()。 对于浮点数,它将向零舍入。
b i n ( x ) bin(x) bin(x)
将整数转变为以“0b”前缀的二进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int 对象,它必须定义 _index_() 方法,以便返回整数值。
若要控制是否显示前缀“0b”,可以采用以下两种方案:
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')
o c t ( x ) oct(x) oct(x)
将一个整数转变为一个前缀为“0o”的八进制字符串。结果是一个合法的 Python 表达式。
若要将整数转换为八进制字符串,并可选择是否带有“0o”前缀,可采用如下方法:
>>> '%#o' % 10, '%o' % 10
('0o12', '12')
>>> format(10, '#o'), format(10, 'o')
('0o12', '12')
>>> f'{10:#o}', f'{10:o}'
('0o12', '12')
h e x ( x ) hex(x) hex(x)
将整数转换为以“0x”为前缀的小写十六进制字符串。如果 x 不是 Python int 对象,则必须定义返回整数的 _index_() 方法。
如果要将整数转换为大写或小写的十六进制字符串,并可选择有无“0x”前缀,则可以使用如下方法:
>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')
数学相关
a b s ( x ) abs(x) abs(x)
返回一个数的绝对值。 参数可以是整数、浮点数或任何实现了 _abs_() 的对象。 如果参数是一个复数,则返回它的模。
d i v m o d ( a , b ) divmod(a, b) divmod(a,b)
以两个(非复数)数字为参数,在作整数除法时,返回商和余数。
e v a l ( e x p r e s s i o n , g l o b a l s = N o n e , l o c a l s = N o n e ) eval(expression, globals=None, locals=None) eval(expression,globals=None,locals=None)
表达式解析参数 expression 并作为 Python 表达式进行求值(从技术上说是一个条件列表),返回值就是表达式的求值结果。 语法错误将作为异常被报告.
m a x 、 m i n max、min max、min
max(iterable, *, key=None)
max(iterable, *, default, key=None)
max(arg1, arg2, *args, key=None)
返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。
min(iterable, *, key=None)
min(iterable, *, default, key=None)
min(arg1, arg2, *args, key=None)
返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。
有两个可选只能用关键字的实参。key 实参指定排序函数用的参数
p o w ( b a s e , e x p , m o d = N o n e ) pow(base, exp, mod=None) pow(base,exp,mod=None)
返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余(比 pow(base, exp) % mod 更高效)。 两参数形式 pow(base, exp) 等价于乘方运算符: base**exp。
r o u n d ( n u m b e r , n d i g i t s = N o n e ) round(number, ndigits=None) round(number,ndigits=None)
返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None,则返回最接近输入值的整数。
s u m ( i t e r a b l e , / , s t a r t = 0 ) sum(iterable, /, start=0) sum(iterable,/,start=0)
从 start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
math模块
组合和排列
编码转换
c h r ( i ) chr(i) chr(i)
返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。这是 ord() 的逆函数。
o r d ( c ) ord(c) ord(c)
对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。例如 ord(‘a’) 返回整数 97, ord(‘€’) (欧元符号)返回 8364 。这是 chr() 的逆函数。
输出
print(*objects, sep=’ ‘, end=’\n’, file=None, flush=False)
将 objects 打印输出至 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep 、 end 、 file 和 flush 必须以关键字参数的形式给出。
所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end。
字符串格式化
IDLE->F1打开Python文档->搜索Format Specification Mini-Language
生成迭代序列
e n u m e r a t e ( i t e r a b l e , s t a r t = 0 ) enumerate(iterable, start=0) enumerate(iterable,start=0)
返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。 enumerate() 返回的迭代器的 _next_() 方法返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
s l i c e slice slice
c
l
a
s
s
s
l
i
c
e
(
s
t
o
p
)
class slice(stop)
classslice(stop)
c
l
a
s
s
s
l
i
c
e
(
s
t
a
r
t
,
s
t
o
p
,
s
t
e
p
=
1
)
class slice(start, stop, step=1)
classslice(start,stop,step=1)
返回一个 slice 对象,代表由 range(start, stop, step) 指定索引集的切片。 其中参数 start 和 step 的默认值为 None。切片对象具有只读数据属性 start 、stop 和 step,只是返回对应的参数值(或默认值)。
z i p ( ∗ i t e r a b l e s , s t r i c t = F a l s e ) zip(*iterables, strict=False) zip(∗iterables,strict=False)
在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成元组。
示例:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
... print(item)
...
(1, 'sugar')
(2, 'spice')
(3, 'everything nice')
排序
Python 列表有一个内置的 list.sort() 方法可以直接修改列表。还有一个 sorted() 内置函数,它会从一个可迭代对象构建一个新的排序列表。
关键函数
list.sort() 和 sorted() 都有一个 key 形参用来指定在进行比较前要在每个列表元素上调用的函数(或其他可调用对象)。
>>> sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
key 形参的值应该是个函数(或其他可调用对象),它接受一个参数并返回一个用于排序的键。 这种机制速度很快,因为对于每个输入记录只会调用一次键函数。
一种常见的模式是使用对象的一些索引作为键对复杂对象进行排序。例如:
>>> student_tuples = [
... ('john', 'A', 15),
... ('jane', 'B', 12),
... ('dave', 'B', 10),
... ]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
升序和降序
list.sort() 和 sorted() 接受布尔值的 reverse 参数。这用于标记降序排序。
True代表降序、默认False代表升序
比较函数
f u n c t o o l s . c m p t o k e y ( f u n c ) functools.cmp_to_key(func) functools.cmptokey(func)
比较函数是接受两个参数,比较它们的任何可调用对象, 并返回一个负数表示小于,零表示相等,或返回一个正数 大于的数字。键函数是接受一个的可调用对象 参数,并返回要用作排序键的另一个值。
sorted(iterable, key=cmp_to_key(locale.strcoll)) # locale-aware sort order
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!