2005年07月01日 星期五 12:54
喔~~谢谢,但,怎么判断什么情况下创建引用,什么情况下创建新对象呢 > 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 > > ___________________________________ > ( It's like deja vu all over again. ) > ( ) > ( -- Yogi Berra ) > ----------------------------------- > o > o > ("`-' '-/") .___..--' ' "`-._ > ` *_ * ) `-. ( ) .`-.__. `) > (_Y_.) ' ._ ) `._` ; `` -. .-' > _.. `--'_..-_/ /--' _ .' ,4 > ( i l ),-'' ( l i),' ( ( ! .-' > _______________________________________________ > 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/d6f3bc40/attachment-0001.htm
2005年07月01日 星期五 13:06
我的一家之言,未必正确,姑且听听。 看等号,等号左边就是引用,等号右边就是实例。 a = 1, a 是引用,1是对象。 把1想象成是Integer类的一个静态成员。 b = a b是引用,a是对象。 a指向1这个Integer类的静态成员,所以b也指向这个成员。 除了等号,def和class也可以把引用和对象绑定在一起,不过这个专题以后有机会再说。 On 7/1/05, kassarar <kassarar at 126.com> 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 > > > > ___________________________________ > > ( It's like deja vu all over again. ) > > ( ) > > ( -- Yogi Berra ) > > ----------------------------------- > > o > > o > > ("`-' '-/") .___..--' ' "`-._ > > ` *_ * ) `-. ( ) .`-.__. `) > > (_Y_.) ' ._ ) `._` ; `` -. .-' > > _.. `--'_..-_/ /--' _ .' ,4 > > ( i l ),-'' ( l i),' ( ( ! .-' > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > 什么邮箱可以注册长度3位用户名,好记又好用? > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月01日 星期五 16:30
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
Zeuux © 2025
京ICP备05028076号