首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python 2函数到python 3转换

Python 2函数到python 3转换
EN

Stack Overflow用户
提问于 2020-09-11 11:57:55
回答 2查看 57关注 0票数 0

我从一个旧的项目中获得了以下函数,并得到了这个错误

def haversine_distance((lat1,lon1),(lat2,lon2)):^ SyntaxError:无效语法

代码语言:javascript
运行
复制
def haversine_distance((lat1, lon1), (lat2, lon2)):
    """
    Haversine distance between two points, given by lon and lat in degrees.
    """

    d_lat = radians(lat2 - lat1)
    d_lon = radians(lon2 - lon1)

    a = sin(d_lat / 2.0) ** 2 + \
        cos(radians(lat1)) * cos(radians(lat2)) * \
        sin(d_lon / 2.0) ** 2

    c = 2 * atan2(sqrt(a), sqrt(1 - a))

    return R * c

我很想知道如何将其转换为python3.8最佳实践。帮助

EN

回答 2

Stack Overflow用户

发布于 2020-09-11 12:02:41

haversine_distance(p1, p2)中将您的函数定义为Python3,并在函数体中解压lat和lon。例如:

代码语言:javascript
运行
复制
def haversine_distance(p1, p2):
    """
    Haversine distance between two points, given by lon and lat in degrees.
    """
    lat1, lon1 = p1
    lat2, lon2 = p2

    d_lat = radians(lat2 - lat1)
    d_lon = radians(lon2 - lon1)

    a = sin(d_lat / 2.0) ** 2 + \
        cos(radians(lat1)) * cos(radians(lat2)) * \
        sin(d_lon / 2.0) ** 2

    c = 2 * atan2(sqrt(a), sqrt(1 - a))

    return R * c
票数 3
EN

Stack Overflow用户

发布于 2020-09-11 12:16:25

扩展到@AndrejKesely应答,为了获得更易读的代码,我将定义一个带有latlon字段的名称元组lat。然后和他们一起工作

代码语言:javascript
运行
复制
from collections import namedtuple
from math import radians, sin, cos, atan2, sqrt

Point = namedtuple('Point', 'lat, lon')

def haversine_distance(point1, point2):
    """
    Haversine distance between two points, given by lon and lat in degrees.
    """

    d_lat = radians(point2.lat - point1.lat)
    d_lon = radians(point2.lon - point1.lon)
    a = sin(d_lat / 2.0) ** 2 + cos(radians(point1.lat)) * cos(radians(point2.lat)) * sin(d_lon / 2.0) ** 2
    c = 2 * atan2(sqrt(a), sqrt(1 - a))

    return R * c # assuming R is global constant 

point1 = Point(42, 23)
point2 = Point(41, 23)
print(haversine_distance(point1, point2))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63846644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档