免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: lemonniu
打印 上一主题 下一主题

如何声明100个字典类型的变量?? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-29 10:08 |只看该作者
原帖由 to407 于 2008-9-28 16:52 发表
这个申请了又有何用。。。

可能lz需要100个字典

论坛徽章:
0
12 [报告]
发表于 2008-09-29 11:20 |只看该作者
为何这个不可

  1. a=[]
  2. [a.append({}) for i in range(100)]
复制代码


知道了
原来 a.append({}) 返回的是 None
[a.append({}) for i in range(100)]
得到的是:
[None,None...]

a=[{},{}...]


[ 本帖最后由 izhier 于 2008-9-29 11:28 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-09-29 11:23 |只看该作者
这个也可以

  1. b=[{} for i in range(100)]
复制代码

论坛徽章:
0
14 [报告]
发表于 2008-09-29 11:25 |只看该作者
有意思,虽然不知道LZ要干嘛。但大家的回答还是学到了不少东西。a = [{1:'aaa'}]*3,a = [{}]*100 都是一样,都是引用。ghostwwl 是对的

论坛徽章:
0
15 [报告]
发表于 2008-09-29 11:55 |只看该作者
[{} for i in range(100)] nice

论坛徽章:
0
16 [报告]
发表于 2008-09-29 12:05 |只看该作者

论坛徽章:
0
17 [报告]
发表于 2008-09-30 16:24 |只看该作者

回复 #16 guijia8427 的帖子

[b.append({}) for i in range(100)]
这样不好,因为利用了列表解析的副作用。
相比而言,
[{} for i in range(100)]
则要好看得多。

[{}] * 100肯定是错误的,因为[{}]是一个含有一个字典的列表,列表里的元素其实可以想成是字典的地址。
咱们把这个列表乘以100, 结果得到一个含有100个元素的列表。每个元素都是同样的地址。也就是说,里面虽然看起来有100个字典,其实是同一个字典的100个引用。

[{} for i in range(100)]则初始化了100次。每一次都新建了一个字典。

论坛徽章:
0
18 [报告]
发表于 2008-10-03 17:02 |只看该作者
受益

论坛徽章:
0
19 [报告]
发表于 2008-10-07 11:16 |只看该作者
原帖由 leefurong 于 2008-9-30 16:24 发表

这样不好,因为利用了列表解析的副作用。
相比而言,
[{} for i in range(100)]
则要好看得多。

[{}] * 100肯定是错误的,因为[{}]是一个含有一个字典的列表,列表里的元素其实可以想成是字典的地址。
...



学习了.
[{}]*100 确实是引用;

[{} for i in range(100)]
这样的做法才Pythonic.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP