python学习记录
2017-05-17 23:59
190 查看
itertools.groupy(iterable, [key])
函数的作用:按照key对迭代器iterable进行分组函数的返回:tuple,其中第一个元素是groupby后的键值,第二个元素是一个迭代器,包含那些被groupby的对象。
第二个参数key是可选的,如果缺省,那就按照iterable的每个元素分组。如果不缺省,那应该是一个函数,将iterable中的每个元素作用于这个函数。
#举个例子1 from itertools import groupby L = ['aa','bb','ccc','ddd','csadfa'] for i,k in groupby(L,len): print i, list(k)
解读:
L是一个list迭代器,其中每个元素都是str;
groupby的第一个参数就是L, 第二个参数是个函数len,将len函数作用于L的每个元素,得到每个字符串的长度为2,2,3,3,6;
然后对这5个数字groupby,得到2,3,6这三个分组;其中,2的组中有’aa’, ‘bb’, 3的组中有’ccc’, ‘ddd’,6的组中有’csadfa’。
groupby的返回是tuple,for循环中i, k分别对应tuple的第0个和第1个元素,i为2时,k为2组中元素组成的迭代器,list(k)就把其中元素作为一个list输出,后两个一样。
输出:
2 ['aa', 'bb'] 3 ['ccc', 'ddd'] 6 ['csadfa']
#举个例子2 L = [{'date' : 1},{'date' : 2}] out = [(name, list(group)) for name, group in groupby(L, lambda p:p['date'])] print out
解读:
L是一个list,其中的每个元素是dictionary
out是一个list,其中的每个元素是一个tuple
groupby的第一个元素是迭代器L,第二个元素是lambda表达式构建的匿名函数,将L的每个元素作为输入。因为L的每个元素p是字典,所以函数的返回值是以date为键值的value。所以groupby的分组是1,2,其中1的分组有元素{‘date’:1}, 2的分组中有元素{‘date’:2}
for循环中name为1时,group是{‘date’:1},list(group)就是[{‘date’:1}]
输出:
[(1, [{'date': 1}]), (2, [{'date': 2}])]
map函数
map(func, iter1, iter2),iter2可选, 也可以有更多的迭代器通常接收一个函数和一个list迭代器,把函数作用于每一个迭代器中元素,然后返回一个新的list
#举个例子 L = [1, 2, 3, 4, 9] print map(lambda x:x**2, L) #返回 [1, 4, 9, 16, 81]
如果迭代器不只一个,那么前面的函数应该接收相应个数的参数,依次从这几个迭代器中取元素。
#举个例子2 L1 = [1, 2, 3, 4, 9] L2 = [3, 10, 20, 30, 40] L3 = [10, 20, 30, 40, 50] print map(lambda a,b,c:a+b+c, L1, L2, L3) #返回:[14, 32, 53, 74, 99]
enumerate函数
函数接受一个迭代器,然后返回若干元组,元组的第一个值是索引,第二个值是迭代器的元素。L = [1, 2, 3, 4, 9] for i, item in enumerate(L): print i, item #返回: 0 1 1 2 2 3 3 4 4 9
相关文章推荐
- Python 学习记录1
- Python 学习记录(1)对象命名导致的问题
- python 学习记录(5)-变量、模块名的命名规则及random模块使用
- python 学习记录(7)-循环/结构化程序(冒泡排序)
- Dive Into Python 学习记录3-getattr 介绍/过滤列表/and or/lambda 函数
- 关于用python的SQLAlchemy访问数据库的学习记录,及SQLAlchemy的安装简介
- python 学习记录(10)-字符串与正则表达式
- python 学习记录(3)—文件操作
- python 学习记录(2)—re 正则表达式模块的使用
- python 学习记录(9)-模块/函数
- Python 学习记录(2) 杯具的GQL
- Python学习记录2
- Python学习(一)——学习资源记录
- python 学习记录(4)—本金+利息计算及简单的游戏猜测程序
- python学习笔记,以此开始记录自己的python学习过程
- python学习记录
- python学习记录
- python modbus_tk库 学习记录
- python 学习记录(6)-模块导入/变量/常量/注释/语句分隔
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析