Python论坛  - 讨论区

标题:[python-chinese] 关于enumerate和setdefault

2006年06月27日 星期二 08:25

linda.s samrobertsmith at gmail.com
Tue Jun 27 08:25:45 HKT 2006

不明白enumerate对于list的作用
和setdefault对于dictionary的作用.
高手指点一下.
LINDA

On 6/26/06, linda. s <samrobertsmith at gmail.com> wrote:
> 以下程序为什么错?
> >>> p
> '\n3 1 5 5\n2 6 5 1\n10 1 44 10\n66 55 15 1 \n88 2  20 99\n'
> >>> s=[ map(int,seg.split()) for seg in p.strip().split("\n")]
> Traceback (most recent call last):
>  File "", line 1, in ?
> TypeError: 'tuple' object is not callable
>
> Linda
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年06月27日 星期二 08:53

limodou limodou at gmail.com
Tue Jun 27 08:53:37 HKT 2006

On 6/27/06, linda. s <samrobertsmith at gmail.com> wrote:
> 不明白enumerate对于list的作用

enumerate在遍历时可以返回元素的索引值,如:

for i, v in enumerate(a):

这对于某些需要索引值的情况非常方便。如打印序号,如果不用这个方法,我们遍历一般要写成:

for i in range(len(a)):
    print i, a[i]

而使用enumerate,可以写为:

for i, v in enumerate(a):
    print i, v

> 和setdefault对于dictionary的作用.
> 高手指点一下.
> LINDA

setdefault看文档相当于:

D.setdefault(k[,d])  --> D.get(k, d) also D[k] = d if k not in D

也就是说相当于执行get方法,但如果k不存在,还要将缺省值加入到字典时。这个对于先判断key是否存在,如果存在则返回,如果不存在则设置缺省值的处理可以简化为一行语句。
>
> On 6/26/06, linda. s <samrobertsmith at gmail.com> wrote:
> > 以下程序为什么错?
> > >>> p
> > '\n3 1 5 5\n2 6 5 1\n10 1 44 10\n66 55 15 1 \n88 2  20 99\n'
> > >>> s=[ map(int,seg.split()) for seg in p.strip().split("\n")]
> > Traceback (most recent call last):
> >  File "", line 1, in ?
> > TypeError: 'tuple' object is not callable
> >
我试了没有问题啊。

-- 
I like python!
My Blog: http://www.donews.net/limodou
My Django Site: http://www.djangocn.org
NewEdit Maillist: http://groups.google.com/group/NewEdit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号