Python算法详解
上QQ阅读APP看书,第一时间看更新

2.3.10 转换并换算数据

在Python程序中,我们可以对字典或列表中的数据同时进行转换和换算操作。此时需要先对数据进行转换或筛选操作,然后调用换算(reduction)函数(例如sum()、min()、max())进行处理。

(1)函数sum():进行求和计算,语法格式如下所示。

sum(iterable[, start])

· 参数iterable:可迭代对象,如列表。

· 参数start:指定相加的参数,如果没有设置这个值,默认为0。

例如下面展示了使用函数sum()的过程:

>>>sum([0,1,2])
3  
>>> sum((2, 3, 4), 1)        # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
12

(2)函数min():返回给定参数的最小值,参数可以是序列。语法格式如下所示。

min(x,y,z, .... )

· 参数x:数值表达式。

· 参数y:数值表达式。

· 参数z:数值表达式。

(3)函数max():返回给定参数的最大值,参数可以是序列。使用方法和参数说明跟min()函数相同。

下面的实例文件zuixiaoda.py演示了使用函数min()获取最小值的过程。

源码路径:daima\第2章\zuixiaoda.py

print ("min(80, 100, 1000) : ", min(80, 100, 1000))
print ("min(-20, 100, 400) : ", min(-20, 100, 400))
print ("min(-80, -20, -10) : ", min(-80, -20, -10))
print ("min(0, 100, -400) : ", min(0, 100, -400))
print ("max(80, 100, 1000) : ", max(80, 100, 1000))
print ("max(-20, 100, 400) : ", max(-20, 100, 400))
print ("max(-80, -20, -10) : ", max(-80, -20, -10))
print ("max(0, 100, -400) : ", max(0, 100, -400))

执行后会输出:

min(80, 100, 1000) :  80
min(-20, 100, 400) :  -20
min(-80, -20, -10) :  -80
min(0, 100, -400) :  -400
max(80, 100, 1000) :  1000
max(-20, 100, 400) :  400
max(-80, -20, -10) :  -10
max(0, 100, -400) :  100

下面的实例文件zuixiaoda.py演示了同时对数据进行转换和换算的过程。

源码路径:daima\第2章\zuixiaoda.py

nums = [1, 2, 3, 4, 5]
s = sum( x*x for x in nums )
print(s) 
import os
files = os.listdir('.idea')
if any(name.endswith('.py') for name in files):
     print('这是一个Python文件!')
else:
     print('这里没有Python文件!')
s = ('RMB', 50, 128.88)
print(','.join(str(x) for x in s))
portfolio = [
     {'name': 'AAA', 'shares': 50},
     {'name': 'BBB', 'shares': 65},
     {'name': 'CCC', 'shares': 40},
     {'name': 'DDD', 'shares': 35}
]
min_shares = min(s['shares'] for s in portfolio)

在上述代码中,以一种非常优雅的方式将数据的换算和转换结合在一起,具体方法是在函数参数中使用生成器表达式。执行结果如图2-26所示。

图2-26 执行结果