您的位置:首页 > 编程语言 > Python开发

Python3 zip,lambda,map,reduce的使用

2016-10-26 20:40 621 查看
使用Python进行数据处理的时候经常遇到一些Python独有的小函数,使用这些小函数

可以大大减少代码量。Python2中的使用方法与3有些不同,具体参见

这里写链接内容

# -*- coding: utf-8 -*-
"""
Created on Wed Oct 26 11:51:32 2016

@author: Jian
"""
import functools
a = [1,2,3,4,5]
b = [2,2,9,0,9]

def pick_the_largest(a, b):
result = []  # A list of the largest values

# Assume both lists are the same length
list_length = len(a)
for i in range(list_length):
result.append(max(a[i], b[i]))
return result

print(pick_the_largest(a, b))

"""
This function takes two equal-length collections,
and merges them together in pairs.
If we use this on our list of values,
we get the following:
[2, 2, 9, 4, 9]
"""
print(list(zip(a,b)))
"""
function 参数:返回值
"""

f = lambda x, y : x + y
print(f(1,1))
"""
map(func,seq)
func是计算的函数,seq是传入的数组
"""
def fahrenheit(T):
return ((float(9)/5)*T + 32)

def celsius(T):
return (float(5)/9)*(T-32)
temperatures = (36.5, 37, 37.5, 38, 39)
F = map(fahrenheit, temperatures)
C = map(celsius, F)

temperatures_in_Fahrenheit = list(map(fahrenheit, temperatures))
temperatures_in_Celsius = list(map(celsius, temperatures_in_Fahrenheit))
print(temperatures_in_Fahrenheit)
print(temperatures_in_Celsius)
"""
map lambda 配合使用效果更好
"""
C = [39.2, 36.5, 37.3, 38, 37.8]
F = list(map(lambda x: (float(9)/5)*x + 32, C))
print(F)

"""
lambda 写计算函数,a,b传入两个数组参数
[18, 14, 14, 14]
"""
a = [1,2,3,4]
b = [17,12,11,10]
c = [-1,-4,5,9]
print(list(map(lambda x,y:x+y, a,b)))
"""
filter(function, sequence)
返回True的数进数组
"""

fibonacci = [0,1,1,2,3,5,8,13,21,34,55]
odd_numbers = list(filter(lambda x: x % 2, fibonacci))
print(odd_numbers)
"""
113
102
"""
print(functools.reduce(lambda x,y: x+y, [47,11,42,13]))
#累加
from functools import reduce
#找到最大值
f = lambda a,b: a if (a > b) else b
print(reduce(f, [47,11,42,102,13]))
#累乘
print(reduce(lambda x, y: x*y, range(1,3)))
m = list(range(1,3))
#[1, 2]
print(m)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 函数 lambda 数据