鱼C论坛

 找回密码
 立即注册
查看: 2761|回复: 3

求解下3维列表创建初始化的问题!

[复制链接]
发表于 2018-5-28 01:20:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在做个程序设计,创建3维list时:
a = len(b) (已知a值为1)
d = len(e) (已知d值为4)
c = [[[] for i in range(a)] for j in range(d)]
只输出2维list:
[[], [], [], []]
但我试了下,直接赋值a = 1,
c = [[[] for i in range(a)] for j in range(d)]
就可以输出3维list:
[[[]], [[]], [[]], [[]]]

这是为什么??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-28 08:51:43 | 显示全部楼层
我测试了一下,两种结构式一样的,都是[[[]], [[]], [[]], [[]]],你把完整的程序的发上来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-28 09:01:25 | 显示全部楼层
应该是你的len(b)求出来的值为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-28 21:51:50 | 显示全部楼层
冬雪雪冬 发表于 2018-5-28 08:51
我测试了一下,两种结构式一样的,都是[[[]], [[]], [[]], [[]]],你把完整的程序的发上来。

原程序有点多。。
我试了很多,发现和a的值无关,我把
c = [[[] for i in range(a)] for j in range(d)]
放在了if语句里,运行就只能创建2维list,
但不设if判断运行的话就可以正常创建。
我设if判断的原因是使函数内c的初始化只执行一次,而不放在函数外面因为a和d还没得到定义。
大概形式就是:
def n():
    c = [[[] for i in range(a)] for j in range(d)]
def m():
    n()
def o():
    for i in range(...):
        m()
所以想问这个列表c只执行一次的初始化应该在什么地方或怎么处理,或者有没有静态变量这种东西,新手求教。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-16 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表