免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2070 | 回复: 1
打印 上一主题 下一主题

[]问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-11 16:48 |只看该作者 |倒序浏览
>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.items()
[('pwd', 'secret'), ('database', 'master'), ('uid', 'sa'), ('server', 'mpilgrim')]


>>> [k for k,v in params.items()]   //不明白为什么要用[.....]把他们包起来
['pwd', 'database', 'uid', 'server']

>>> k for k,v in params.items()     //这个我测试
Traceback (  File "<interactive input>", line 1
    k for k,v in params.items()
        ^
SyntaxError: invalid syntax
>>> (k for k,v in params.items())   //我换成了(.......)
<generator object at 0x00F22878>
>>> (k for k,v in params.items())
<generator object at 0x00F224B8> //输出这个了不知道这是什么意思


不明白 [k for k,v in params.items()] 为什么 要 用 [...]

请高手指点下,谢谢.....

论坛徽章:
0
2 [报告]
发表于 2007-12-11 17:04 |只看该作者
单纯的for语句前面不能有东西,因此直接的 k for k,v in params.items() 就是错的。而

[k for k,v in params.items()]

这个是python中的一种叫list comprehension的表达式语句,它可以通过循环生成一个新的list,上面的代码相当于:


  1. s = []
  2. for k, v in params.items():
  3.     s.append(k)
复制代码


而(k for k,v in params.items())则又是另一种叫generator expression的语法,详情可以参阅python语法手册5.2.5 Generator expressions。而一个generator其实是一个可以多次调用的函数,具体的内容还是建议找些文章或教程学一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP