鱼C论坛

 找回密码
 立即注册
查看: 1207|回复: 9

python如何实现n维数据的遍历处理?

[复制链接]
发表于 2020-3-23 21:21:13 | 显示全部楼层 |阅读模式

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

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

x
举个例子,如果要处理一个数组中的每一个数据,可以用一层循环语句实现,我们姑且称这样的数组为一维的。循环次数为数组的长度a
二维数组就是在一个二维的表格(可以想象一个a*b的长方形)中的数据,可以用2层循环语句实现。循环的总次数为数组的a*b
同理,n维的数据则需要n层循环语句。
在n可变或者n很大的情况下,python中存不存在一种语句能够实现n维数据的遍历处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-23 21:24:52 | 显示全部楼层
或者说有没有一种语句能够实现n层循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 21:27:51 | 显示全部楼层
mdphd 发表于 2020-3-23 21:24
或者说有没有一种语句能够实现n层循环

for 循环?
for i in range(n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 21:41:45 | 显示全部楼层
递归吧,for已经无法满足了 比如 n维数据 要使用n层循环 计算机可以实现 你写的过来吗?
还是建议 采用递归方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 21:50:55 | 显示全部楼层
递归不是有上限吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 21:53:54 | 显示全部楼层
TJBEST 发表于 2020-3-23 21:41
递归吧,for已经无法满足了 比如 n维数据 要使用n层循环 计算机可以实现 你写的过来吗?
还是建议 采用递 ...

这就是我想问的
还有,递归不是有上限吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 22:11:13 | 显示全部楼层
mdphd 发表于 2020-3-23 21:50
递归不是有上限吗
>>> import sys
>>> sys.setrecursionlimit(10000000)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 22:18:10 | 显示全部楼层
mdphd 发表于 2020-3-23 21:53
这就是我想问的
还有,递归不是有上限吗

一般也不会这么多层啊,没有意义的设计。既然面型对象了,最好还是用属性之类的表示,赋予其意义
再说储存数据 一般用json xml等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 02:55:49 | 显示全部楼层
我觉得Python对n维数组的支持已经很爽了,遍历起来很容易啊
>>> a=[1,2,3,4,5]
>>> b=[a,a,a,a]
>>> b
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
>>> c=[b,b,b]
>>> c
[[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]]
>>> d=[c,c]
>>> d
[[[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]], [[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]]]
for eachd in d:
        for eachc in eachd:
                for eachb in eachc:
                        for eacha in eachb:
                                print(eacha)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 06:46:53 | 显示全部楼层
使用 numpy 处理数组会好些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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