我有4维数组,用于存储5维特征空间中的点值。幸运的是,所有功能都可以用整数来描述,从0开始(因此,可以通过列表索引进行编码)。当我处理我的数据时,我做了类似的事情(请注意,我不仅需要值,还需要所有相应的功能):
for f1 in range(len(data)):
for f2 in range(len(data[f1])):
for f3 in range(len(data[f1][f2])):
for f4 in range(len(data[f1][f2][f3])):
for f5 in range(len(data[f1][f2][f3][f4])):
value = data[f1][f2][f3][f4][f5]
process_point(f1, f2, f3, f4, f5, value)
然而,由于筑巢水平高,这看起来有点难看。有没有办法重构此代码以减少嵌套?扁平函数有不同的实现方式;但是,它们只能保留值,而不是索引。如果解决方案不会导致性能大幅下降,那么它也会很好。