Python论坛  - 讨论区

标题:Re: Re:[python-chinese]问一个问题

2005年07月01日 星期五 20:07

kassarar kassarar at 126.com
Fri Jul 1 20:07:41 HKT 2005

明啦,原来如此,细节问题最重要!!!!

> lst = [[]] * n 等价于:
> 
> x = []
> lst = []
> for i in range(n):
>     lst.append(x)
> 
> lst = [ [] for x in range(n) ] 等价于:
> 
> lst = []
> for i in range(n):
>     lst.append([])
> 
> 看出区别了吗?
> 第一种方法的lst中的每一个元素都指向同一个[](即赋值给x上的那个)。而第二
> 种方法的lst中的每一个元素则为不同的[]
> 
> 这是在使用 [x] * n 语法时要特别注意的地方。
> 
> 
> kassarar wrote:
> > 喔~~谢谢,但,怎么判断什么情况下创建引用,什么情况下创建新对象呢
> > 
> >> kassarar wrote:
> >> > 我用的是python2.4.1
> >> >
> >> > >>> TypeDict=dict(zip(AllTypes,[[]]*len(AllTypes)))
> >>
> >> 把这句改成
> >>
> >> TypeDict = dict(zip(AllTypes, [[] for t in AllTypes]))
> >>
> >> 不然你这里创建的列表指向的都是同一个[]
> >>
> >> BTW, 我觉得写成 TypeDict = dict((t, []) for t in AllTypes) 更pythonic些
> >>
> >> [...]
> >> >
> >> > >>> TypeDict['IntType'].append('k')
> >> > >>> TypeDict
> >> > {'IntType': ['k'], 'TypeType': ['a', 'b'], 'CodeType': ['k'],
> >> > 'BooleanType': ['k'], 'UnboundMethodType': ['k'], 'StringType':
> >> > ['k'], 'BuiltinMethodType': ['k'], 'FloatType': ['k'], 'DictionaryType':
> >> > ['k'], 'NotImplementedType': ['k'], 'BuiltinFunctionT
> >> > ype': ['k'], 'DictProxyType': ['k'], 'GeneratorType': ['k'],
> >> > 'InstanceType': ['k'], 'ObjectType': ['k'], 'DictType': ['k'], 'F
> >> > ileType': ['k'], 'EllipsisType': ['k'], 'ListType': ['k'], 'MethodType':
> >> > ['k'], 'TupleType': ['k'], 'ModuleType': ['k'], 'Fram
> >> > eType': ['k'], 'LongType': ['k'], 'BufferType': ['k'], 'TracebackType':
> >> > ['k'], 'ClassType': ['k'], 'UnicodeType': ['k'], 'Slic
> >> > eType': ['k'], 'ComplexType': ['k'], 'LambdaType': ['k'],
> >> > 'FunctionType': ['k'], 'XRangeType': ['k'], 'NoneType': ['k']}
> >> >
> >> > #但这里就不明白了,怎么每一个都加了呢
> >> [...]
> 
> -- 
> Qiangning Hong
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050701/689bdcac/attachment.html

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号