均分list
题面儿
OnMyWay <onmyway.q@gmail.com> reply-to python-cn@googlegroups.com to python-cn@googlegroups.com date Fri, Mar 6, 2009 at 21:03 subject [CPyUG:80732] 如何等分一个list?
- 假设有一个list = range(100), 我要把它等分成每10个一组,如何写代码呢?
aa = range(100) bb = func(aa) print bb [[0:9],[10:19],[20:29],.....]
推导式
萧萧 <yaksavage@gmail.com>
[a[m:m+10] for m in range(100) if m%10==0]
bob ning <nb5550606@gmail.com>
[ range(i, i+10) for i in range(0, 100, 10) ]
zip()
Li Feng <nemokingdom@gmail.com>
- 可读性有点儿差的,
zip(*(iter(L),)*10)
- 实际上是python library reference里边提到的用法:
http://docs.python.org/library/functions.html#zip
- 点评
shell909090 <shell909090@gmail.com>我多嘴说一下为啥吧,刚刚看了半天。
- 按照zip的语法,其实it=iter(L);zip(it,it..重复10次..),就可以达到目标。
- 原因是zip会从头一个函数获得头一组的第一个对象,第二个函数获得头一组的第二个对象。而这正好是第二个元素。
- 首先,我加个括号zip(*((iter(L),)*10))。
- 大家可以看到,结果不变。
- ((iter(L),)*10)是一个语法糖,将某个tuply的内容重复10次。
而后,通过zip(*arg)的语法,这10次的iter(L)就被作为参数传入了zip。的却非常不直观。
yield
Qiangning Hong <hongqn@gmail.com>
web.py 里的代码:
反馈
创建 by -- ZoomQuiet [2009-03-06 14:54:38]