Python论坛  - 讨论区

标题:Re: [python-chinese] 请问,怎么声明一个二维的数组啊?

2005年08月31日 星期三 14:38

Jerry jetport at gmail.com
Wed Aug 31 14:38:57 HKT 2005

> 
> 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

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

2005年08月31日 星期三 15:27

flya flya flyaflyaa at gmail.com
Wed Aug 31 15:27:49 HKT 2005

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
> 
> 
>

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

2005年08月31日 星期三 15:30

limodou limodou at gmail.com
Wed Aug 31 15:30:45 HKT 2005

在 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

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

2005年08月31日 星期三 17:41

Jerry jetport at gmail.com
Wed Aug 31 17:41:13 HKT 2005

> 
> > > 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

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

2005年08月31日 星期三 20:51

倪正刚 ni at twinisa.com
Wed Aug 31 20:51:54 HKT 2005

嗯,我想问一个问题。

不论是简化的写法,还是原来比较复杂的写法。在性能上是否存在差异?




-----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


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

2005年08月31日 星期三 21:21

xu.shengyong zjxushengyong at hotmail.com
Wed Aug 31 21:21:52 HKT 2005

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050831/0a6491b7/attachment.html

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

2005年08月31日 星期三 21:25

goopler alang.yl at gmail.com
Wed Aug 31 21:25:33 HKT 2005

你去下 PythonWin的源码,就什么经验都有了。

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号