为了账号安全,请及时绑定邮箱和手机立即绑定

遍历python不定常不定维数组

遍历python不定常不定维数组

有一大推geojson数据,现在需要对其进行坐标转换,geojson数据示例coordinates=[119,35]coordinates=[[119,35],[119,35]]coordinates=[[[119,35],[119,35]],[[119,35],[119,35]]]期望转换后的坐标:coordinates=[11900,3500]coordinates=[[11900,3500],[11900,3500]]coordinates=[[[11900,3500],[11900,3500]],[[11900,3500],[11900,3500]]]怎么遍历到每一个position(坐标对)?我现在是这么做的:deftransform(x,y,other_parameter):return....defmiterator(ary,mapper):ifisinstance(ary,list):ifisinstance(ary[0],list):forelinary:miterator(el,mapper)else:ary[0],ary[1]=mapper(ary[0],ary[1])deflogic(...):other_parameter=....coordinates=get_coordinates(..)miterator(coordinates,transform)#??????然后问题就出来了,我怎么把other_parameter传到transform里面?所以我希望最好通过generator方式:defxgenerator(ary):ifxx:...yield(x,y)然后我就可以通过这种方式调用:deflogic(...):other_parameter=....coordinates=get_coordinates(..)forx,yinxgenerator(coordinates):transform(x,y,other_parameter)但是这个generator我死活写不出来,怎么破?
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

这个递归很难写?不过估计Python除了递归应该有更好的方法吧,我也不太懂。顺带帮你把所有的坐标从序列改成元组格式了。仅供参考:
#!/usr/bin/envpython3
deftransform(el,args):
return(el[0]*args[0],el[1]*args[0])
defmiterator(arrs,mapper,*args):
ifisinstance(arrs[0],int):
returnmapper(arrs,args[0])
arr=[];
forelinarrs:
ifisinstance(el[0],int):item=mapper(el,args[0])
else:item=miterator(el,mapper,args)
arr.append(item)
returnarr
coordinates=[[[119,35],[119,35]],[[119,35],[119,35]]]
print(miterator(coordinates,transform,100))
#[[(11900,3500),(11900,3500)],[(11900,3500),(11900,3500)]]
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 476 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信