Python论坛  - 讨论区

标题:Re: [python-chinese]Re: 嵌套list疑问

2005年07月09日 星期六 18:44

amingsc amingsc at 163.com
Sat Jul 9 18:44:44 HKT 2005

>再举一例!
>举例三:
>>>> s = [[0, 0, 0], [0, 0, 0]]
>>>> s
>[[0, 0, 0], [0, 0, 0]]
>>>> s[0][2] +=1
>>>> s
>[[0, 0, 1], [0, 0, 0]]
>原来问题出在*(重复运算)!可能因为重复的是引用,而不是值。
>不知道这算bug,还是正常现象?
对你的程序由于不是原来想达到的结果所以是bug
对python语言由于是语言本身需要达到的结果所以不是bug

>在 05-7-9,Person<person.lee at gmail.com> 写道:
>> 举例一:
>> >>> s=[[0]*3]*2
>> >>> s
>> ...[[0, 0, 0], [0, 0, 0]]
>> >>> s[0][2] +=1
>> >>> s
>> ...[[0, 0, 1], [0, 0, 1]]
>> #咦,s[0][2]变成1,s[1][2]怎么也成1了!?
>> 
>> 举例二:
>> >>> s = [range(3),range(4,7)]
>> >>> s
>> ...[[0, 1, 2], [4, 5, 6]]
>> >>> s[0][2] +=1
>> >>> s
>> ...[[0, 1, 3], [4, 5, 6]]
>> #这才正常:s[0][2]为2+1=3,s[1][2]没变!

这个特性是py的引用机制的特点,对很多从其他语言刚转过来的人是不大容易理解
不过几乎每本py书上都有讲到这个问题,好好看看得了
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>




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

2005年07月11日 星期一 17:56

Person person.lee at gmail.com
Mon Jul 11 17:56:34 HKT 2005

多谢大家的指教,从这个例子中我对于引用在python中的作用明白很多了,但还是感觉很难理解透。如,举例一中s[0][1]、s[1][1]、s[0][0]、s[1][0]为何没有变成1呢?
我是这样理解:
s中存在两个重复的引用(指向同一个位置的指针),一个引用是指向0的,另一个引用是指向[0,0,0]的。
当s[0][2] +=1时,修改了第一个引用的值(指向另一个位置),同时修改了第二个引用指向的对象([0,0,0]该list)的内容(即修改第3个元素,成为[0,0,1])。

期待limodo找到的两文章。
还有这一主题该如何下关键词STFW?还请指教!
如以"python 引用"为关键词,基本没找到有用的信息。

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

2005年07月11日 星期一 18:00

limodou limodou at gmail.com
Mon Jul 11 18:00:12 HKT 2005

文章我已经另开主题发出去了。如果没看到可以去我的blog看一下,或去啄木鸟看一下。

在 05-7-11,Person<person.lee at gmail.com> 写道:
> 多谢大家的指教,从这个例子中我对于引用在python中的作用明白很多了,但还是感觉很难理解透。如,举例一中s[0][1]、s[1][1]、s[0][0]、s[1][0]为何没有变成1呢?
> 我是这样理解:
> s中存在两个重复的引用(指向同一个位置的指针),一个引用是指向0的,另一个引用是指向[0,0,0]的。
> 当s[0][2] +=1时,修改了第一个引用的值(指向另一个位置),同时修改了第二个引用指向的对象([0,0,0]该list)的内容(即修改第3个元素,成为[0,0,1])。
> 
> 期待limodo找到的两文章。
> 还有这一主题该如何下关键词STFW?还请指教!
> 如以"python 引用"为关键词,基本没找到有用的信息。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

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

2005年07月11日 星期一 18:00

limodou limodou at gmail.com
Mon Jul 11 18:00:45 HKT 2005

啄木鸟的在这里: http://wiki.woodpecker.org.cn/moin.cgi/MicroProj/2005-07-10

在 05-7-11,limodou<limodou at gmail.com> 写道:
> 文章我已经另开主题发出去了。如果没看到可以去我的blog看一下,或去啄木鸟看一下。
> 
> 在 05-7-11,Person<person.lee at gmail.com> 写道:
> > 多谢大家的指教,从这个例子中我对于引用在python中的作用明白很多了,但还是感觉很难理解透。如,举例一中s[0][1]、s[1][1]、s[0][0]、s[1][0]为何没有变成1呢?
> > 我是这样理解:
> > s中存在两个重复的引用(指向同一个位置的指针),一个引用是指向0的,另一个引用是指向[0,0,0]的。
> > 当s[0][2] +=1时,修改了第一个引用的值(指向另一个位置),同时修改了第二个引用指向的对象([0,0,0]该list)的内容(即修改第3个元素,成为[0,0,1])。
> >
> > 期待limodo找到的两文章。
> > 还有这一主题该如何下关键词STFW?还请指教!
> > 如以"python 引用"为关键词,基本没找到有用的信息。
> >
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

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

2005年07月12日 星期二 11:18

Person person.lee at gmail.com
Tue Jul 12 11:18:56 HKT 2005

谢谢!又学到不少东西!

在 05-7-11,limodou<limodou at gmail.com> 写道:
> 啄木鸟的在这里: http://wiki.woodpecker.org.cn/moin.cgi/MicroProj/2005-07-10
> 
> 在 05-7-11,limodou<limodou at gmail.com> 写道:
> > 文章我已经另开主题发出去了。如果没看到可以去我的blog看一下,或去啄木鸟看一下。
> >
> > 在 05-7-11,Person<person.lee at gmail.com> 写道:
> > > 多谢大家的指教,从这个例子中我对于引用在python中的作用明白很多了,但还是感觉很难理解透。如,举例一中s[0][1]、s[1][1]、s[0][0]、s[1][0]为何没有变成1呢?
> > > 我是这样理解:
> > > s中存在两个重复的引用(指向同一个位置的指针),一个引用是指向0的,另一个引用是指向[0,0,0]的。
> > > 当s[0][2] +=1时,修改了第一个引用的值(指向另一个位置),同时修改了第二个引用指向的对象([0,0,0]该list)的内容(即修改第3个元素,成为[0,0,1])。
> > >
> > > 期待limodo找到的两文章。
> > > 还有这一主题该如何下关键词STFW?还请指教!
> > > 如以"python 引用"为关键词,基本没找到有用的信息。
> > >
> > > _______________________________________________
> > > python-chinese list
> > > python-chinese at lists.python.cn
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> > >
> >
> >
> > --
> > I like python!
> > My Donews Blog: http://www.donews.net/limodou
> > New Google Maillist: http://groups-beta.google.com/group/python-cn
> >
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> New Google Maillist: http://groups-beta.google.com/group/python-cn
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号