Jean's Blog

一个专注软件测试开发技术的个人博客

0%

Python 数据运算、逻辑运算和进制转化

数学运算

len(s)

返回对象内元素个数:

1
2
3
>>> dic = {'a': 1, 'b': 3}
>>> len(dic)
2

max(iterable,*[, key, default])

max(iterable,*[, key, default]) 3.4以前版本

max(arg1, arg2, *args[, key]) 3.8版本修改

返回最大值:

1
2
3
4
5
6
7
8
>>> max(3, 1, 4, 2, 1)
4
>>> di = {'a': 3, 'b': 1, 'c': 4}
>>> max(di)
'c'
>>> a = [{'name': 'xiaohong', 'age': 18, 'gender': 'male'}, {'name': 'xiaohong', 'age': 20, 'gender': 'female'}]
>>> max(a, key=lambda x: x['age'])
{'gender': 'female', 'age': 20, 'name': 'xiaohong'}

如果已知多个列表,找出列表更长的,使用 max 方法:

1
2
3
4
5
>>> def max_length(*lst):
... return max(*lst, key=lambda v: len(v))
...
>>> max_length([1, 2, 3], [4, 5, 6, 7], [8])
[4, 5, 6, 7]

代码可视化图:

image-20220408153032991

再看下返回最小值函数:

min(*iterable*, ***[, *key*, *default*])

min(*arg1*, *arg2*, **args*[, *key*])

可看到,max、min 函数都有一个参数 key,它们也被称为 key 函数,key 函数一般结合更紧凑的 lambda 函数。

pow(x, y, z=None, /)

x 为底的 y 次幂,如果 z 给出,取余:

1
2
>>> pow(3, 2, 4)
1

round(number[, ndigits])

四舍五入,ndigits 代表小数点后保留几位:

1
2
>>> round(10.022222222, 3)
10.022

sum(iterable, /, start=0)

求和:

1
2
3
4
5
>>> a = [1, 4, 2, 3, 1]
>>> sum(a)
11
>>> sum(a, 10)
21

abs(x, /)

求绝对值或复数的模:

1
2
>>> abs(-6)
6

divmod(a,b)

分别取商和余数:

1
2
>>> divmod(10, 3)
(3, 1)

complex([real[, imag]])

创建一个复数:

1
2
>>> complex(1, 2)
(1+2j)

hash(object)

返回对象的哈希值:

1
2
3
4
5
6
7
8
9
10
>>> class Student():
... def __init__(self, id, name):
... self.id = id
... self.name = name
... def __repr__(self):
... return 'id = '+self.id+', name = '+self.name
...
>>> xiaoming = Student('001', 'xiaoming')
>>> hash(xiaoming)
-9223372036574182193

id(object)

返回对象的内存地址:

1
2
3
4
5
6
7
8
9
10
>>> class Student():
... def __init__(self, id, name):
... self.id = id
... self.name = name
... def __repr__(self):
... return 'id = '+self.id+', name = '+self.name
...
>>> xiaoming = Student('001', 'xiaoming')
>>> id(xiaoming)
4489497848

逻辑运算

all(iterable)

接受一个迭代器,如果迭代器的所有元素都为真,返回 True,否则返回 False:

1
2
3
4
>>> all([1, 0, 3, 6])
False
>>> all([1, 2, 3])
True

any(iterable)

接受一个迭代器,如果迭代器里有一个元素为真,返回 True,否则返回 False:

1
2
3
4
>>> any([0, 0, 0, []])
False
>>> any([0, 0, 1])
True

进制转化

ascii(object)  

调用对象的 repr() 方法,获得该方法的返回值。

1
2
3
4
5
6
7
8
9
10
11
12
>>> class Student():
... def __init__(self, id, name):
... self.id = id
... self.name = name
... def __repr__(self):
... return 'id = '+self.id+', name = '+self.name
...
>>> xiaoming = Student('001', 'xiaoming')
>>> print(xiaoming)
id = 001, name = xiaoming
>>> ascii(xiaoming)
'id = 001, name = xiaoming'

bin(x)

将十进制转换为二进制:

1
2
>>> bin(10)
'0b1010'

oct(x)

将十进制转换为八进制:

1
2
>>> oct(9)
'011'

hex(x)

将十进制转换为十六进制:

1
2
>>> hex(15)
'0xf'