2005年08月31日 星期三 14:38
> > Leo Jay wrote: > > 我想生成一个二维的整数数组,并且数组里的每个元素赋初值-1 > > 我现在的写法如下: > > board = [ [-1 for i in range(10)] for j in range(10) ] > > > > 有没有什么简短一点的写法啊?二维数组都这么长,那如果是4维的不是要疯掉了? 更短的写法:) board = [ [-1] * 10 ] * 10 -- If U can see it, then U can do it If U just believe it, there's nothing to it I believe U can fly From Jetport at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050831/cc67098a/attachment.html
2005年08月31日 星期三 15:27
board = [ [-1] * 10 ] * 10 这种写法是错误的,所有列都是一个对象,改变其中一个元素,另外9个都会变,只能这样写: board = [[-1]*10 for i in range(10)] 在 05-8-31,Jerry<jetport at gmail.com> 写道: > > > Leo Jay wrote: > > > 我想生成一个二维的整数数组,并且数组里的每个元素赋初值-1 > > > 我现在的写法如下: > > > board = [ [-1 for i in range(10)] for j in range(10) ] > > > > > > 有没有什么简短一点的写法啊?二维数组都这么长,那如果是4维的不是要疯掉了? > > > > 更短的写法:) > > board = [ [-1] * 10 ] * 10 > > > -- > If U can see it, then U can do it > If U just believe it, there's nothing to it > I believe U can fly > From Jetport at gmail.com > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年08月31日 星期三 15:30
在 05-8-31,Jerry<jetport at gmail.com> 写道: > > > Leo Jay wrote: > > > 我想生成一个二维的整数数组,并且数组里的每个元素赋初值-1 > > > 我现在的写法如下: > > > board = [ [-1 for i in range(10)] for j in range(10) ] > > > > > > 有没有什么简短一点的写法啊?二维数组都这么长,那如果是4维的不是要疯掉了? > > > > 更短的写法:) > > board = [ [-1] * 10 ] * 10 > 这就是我想说的问题,你改了一个,其它的也都改了。简化一下: >>> board = [ [-1] * 2 ] * 2 >>> board [[-1, -1], [-1, -1]] >>> board[0][0] = 1 >>> board [[1, -1], [1, -1]] -- I like python! My Donews Blog: http://www.donews.net/limodou
2005年08月31日 星期三 17:41
> > > > Leo Jay wrote: > > > > 我想生成一个二维的整数数组,并且数组里的每个元素赋初值-1 > > > > 我现在的写法如下: > > > > board = [ [-1 for i in range(10)] for j in range(10) ] > > > > > > > > 有没有什么简短一点的写法啊?二维数组都这么长,那如果是4维的不是要疯掉了? > > > > > > > > 更短的写法:) > > > > board = [ [-1] * 10 ] * 10 > > > > 这就是我想说的问题,你改了一个,其它的也都改了。简化一下: > > >>> board = [ [-1] * 2 ] * 2 > >>> board > [[-1, -1], [-1, -1]] > >>> board[0][0] = 1 > >>> board > [[1, -1], [1, -1]] > > 谢谢 limodou 大哥,我回复的时候还没看到你的回复 的确,python在对象的传递都是引用的 为此,看了python library reference关于的对象的复制,我试着用copy模块完成下面多维函数的构造 from copy import deepcopy def multiarray( v,*k): if len(k) == 0:return v ret = [] for i in range(k[-1]): ret.append(deepcopy(v)) return multiarray(ret,*k[:-1]) 调用如: x = multiarray(-1,2,3,4,5) 返回4维的initial value 为 -1的数组 -- If U can see it, then U can do it If U just believe it, there's nothing to it I believe U can fly From Jetport at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050831/5b56334c/attachment.html
2005年08月31日 星期三 20:51
嗯,我想问一个问题。 不论是简化的写法,还是原来比较复杂的写法。在性能上是否存在差异? -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn]On Behalf Of limodou Sent: 2005年8月31日 15:31 To: python-chinese at lists.python.cn Subject: Re: [python-chinese] 请问,怎么声明一个二维的数组啊? 在 05-8-31,Jerry<jetport at gmail.com> 写道: > > > Leo Jay wrote: > > > 我想生成一个二维的整数数组,并且数组里的每个元素赋初值-1 > > > 我现在的写法如下: > > > board = [ [-1 for i in range(10)] for j in range(10) ] > > > > > > 有没有什么简短一点的写法啊?二维数组都这么长,那如果是4维的不是要疯掉 了? > > > > 更短的写法:) > > board = [ [-1] * 10 ] * 10 > 这就是我想说的问题,你改了一个,其它的也都改了。简化一下: >>> board = [ [-1] * 2 ] * 2 >>> board [[-1, -1], [-1, -1]] >>> board[0][0] = 1 >>> board [[1, -1], [1, -1]] -- I like python! My Donews Blog: http://www.donews.net/limodou
2005年08月31日 星期三 21:21
-------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050831/0a6491b7/attachment.html
2005年08月31日 星期三 21:25
你去下 PythonWin的源码,就什么经验都有了。
Zeuux © 2025
京ICP备05028076号