在python中可以利用map, lamda对list进行简单的迭代操作,使code更简洁。
(all codes use the python 3.x version)
>>> a = [1,2,3,4,5]
>>> s = list(map(lambda i: i**5, a))
>>> print(s)
[1, 32, 243, 1024, 3125]
在工作中实际遇到了一个问题,是对字典类型的数组进行更新操作。
如下创建好了一个字典,发现数据中所有的成员少了专业信息
students = [{"name":"John", "age":18, "gender":"Male"}, {"name":"Amy", "age":17, "gender":"Female"}, {"name":"Eile", "age":18, "gender":"Female"}, {"name":"Henery", "age":19, "gender":"Female"}]
第一种用for循环
>>> for student in students:
... student["major"] = "computer"
>>> students
[{'name': 'John', 'age': 18, 'gender': 'Male', 'major': 'computer'}, {'name': 'Amy', 'age': 17, 'gender': 'Female', 'major': 'computer'}, {'name': 'Eile', 'age': 18, 'gender': 'Female', 'major': 'computer'}, {'name': 'Henery', 'age': 19, 'gender': 'Female', 'major': 'computer'}]
一个简单功能的for循环可以用lambda可map来替代,所以更新后代码为
>>> list(map(lambda s: s.update({"major":"computer"}), students))
[None, None, None, None]
>>> students
[{'name': 'John', 'age': 18, 'gender': 'Male', 'major': 'computer'}, {'name': 'Amy', 'age': 17, 'gender': 'Female', 'major': 'computer'}, {'name': 'Eile', 'age': 18, 'gender': 'Female', 'major': 'computer'}, {'name': 'Henery', 'age': 19, 'gender': 'Female', 'major': 'computer'}]
代码需注意:
1. python3中map()函数是Python中的一个内置函数,它的功能是:将指定的函数,依次作用于可迭代对象的每个元素,并返回一个迭代器对象。这个可迭代对象,可以是一个也可以是多个。所以要用list对map做类型转换
2. 在lamda中不能写为 lamda s: s["major"] = "computer",因为在lamda中不接受赋值语句
3. 此方法返回的list均为none, 操作之后是原始组发生了改变,与以往生成一个新数组的方法不同。