Python 需要帮助使用map()操作、列表、浮点和一些验证优化geo算法吗

Python 需要帮助使用map()操作、列表、浮点和一些验证优化geo算法吗,python,Python,我在做一些路线计算。 我需要找出一些走错方向的路线。。。 所有游乐设施都有路线,所有路线都由路线上的许多台阶组成。。。。每个步骤都有一个lat.和一个lng。一对 我希望这有意义 这就是我现在做的方式,而且很有效。。。然而我在许多机器上执行这个操作!骑乘..路线..协调成对,所以我可以在代码中使用一些加速 for ride in initial_rides: steps = ride.route.steps.all() for step in steps: i

我在做一些路线计算。 我需要找出一些走错方向的路线。。。 所有游乐设施都有路线,所有路线都由路线上的许多台阶组成。。。。每个步骤都有一个lat.和一个lng。一对 我希望这有意义

这就是我现在做的方式,而且很有效。。。然而我在许多机器上执行这个操作!骑乘..路线..协调成对,所以我可以在代码中使用一些加速

for ride in initial_rides:  
steps = ride.route.steps.all()  
    for step in steps:  
        if lat_min < step.latitude< lat_max and lng_min< step.longitude< lng_max:  
            approved_rides.append(ride)  
            break  
我最好承认我不是超级程序员:

我曾尝试过这样的建筑,但没有任何运气:

for i in ride:  
    number  = sum(itertools.ifilter(lambda x: lat_min< x.latitude< lat_max and lng_min< x.longitude< lng_max, ride.route.steps.all()))  
    if number >= 1:  
        approved_rides.append(ride)  
尝试合并lambda和ifilter,但我得到一个错误,说运算符不支持int和step类型。。。我做错什么了吗

我应该使用列表理解吗??地图还是别的什么

我很幸运地读完了

非常感谢您的帮助。谢谢你,祝你愉快:


Peter

为了加快速度,您可能应该使用更好的算法,而不是尝试所有可能的解决方案。这可以解决你的问题

你可以试试这样的理解

approved_rides = [ride for ride in initial_rides if any(
          (lat_min < step.latitude< lat_max and \
           lng_min< step.longitude< lng_max) for step in ride.route.steps.all())]
这是作为一行程序的第一个代码块


如果你能告诉我它的速度有多快,我很感兴趣:-

错误的原因是你在一个不能求和的列表中调用sum,即ride.route.steps.all。我假设它给出了一个步骤列表;你打算把它们加起来做什么

可以使用len计算列表中的元素数

我认为你正在努力做到以下几点:

key = lambda x: lat_min< x.latitude< lat_max and lng_min< x.longitude< lng_max
approved_rides = [ ride for ride in rides if any( map( key, ride.route.steps.all( ) ) ) ]

这将使approved_rides成为一个ride.roude.steps.all满足所有关键条件的游乐设施列表。

使用101按钮格式化代码并使其更具可读性我现在为您做了我想您已经找到了修复代码的杀手。Python是难以辨认的模棱两可的,除非它正确缩进。啊,好的。感谢修复它的人:我的第一篇帖子,所以它有点新。到现在为止,我一直在吸收这里所有的建议!伟大的网站!!:-第二个代码块毫无意义。。。你甚至不用“我你”循环!根据经验,这些问题被认为是性能瓶颈,应该由较低级别的语言来解决,例如C python具有易于使用的python-C互操作性LIB,例如,或感谢:将尝试此方法并发布速度有多快:我现在已经尝试了您的方法。最初的骑乘次数很少,速度大约快30%:然而有很多!骑乘和坐标在时间上几乎没有差别。这可能是因为理解基本上是同一种代码吗。。?用同样的循环等等?从我所读到的,map函数执行代码ic,那么你认为有可能生成一个类似于你刚才用map或类似的高效算法吗?彼得·莫勒:这正是我所期望的。LCs实际上比map更优化,他们几乎所有的时间都花在C代码上。正如我所说,你需要一个更好的算法,像这样的微优化将一事无成。谢谢。有点像我在找的。但是这个值实际上是0.69,-S我自己的简单方法是0.52,THC4k是0.45。。。不过,你的两种方法都达到了我想要的效果,所以谢谢你:也许我再也不能提高速度了。也许我首先应该重新考虑一下我对这些路线的排序方式:-/无论如何,谢谢你:嘿,这绝不是为了优化速度。THC4k的代码更清晰更快!