python - 如何遍历列表列表的列表列表...... python 中的一对坐标列表?

标签 python list recursion data-structures

我正在尝试遍历 python 中的一对坐标列表的列表列表列表,我想对每一对坐标求和一个值,但我也想保留结构。

我认为一个例子胜过一千个字所以:

coordinates = [[[-15.418887, 28.180395], [-15.418887, 28.180395]],
 [[-15.794088, 28.018681], [-15.794088, 28.018681]]]

这是一个非常基本的示例,但并非真实情况。实际上,除了一对坐标外,每个列表的长度都是可变的。所以可能有 4 个列表,直到坐标对列表的列表或者它可能是 3,它是可变的

我想向这些坐标中的每一个添加 3(例如),但保持原始结构(我不想扁平化列表列表的列表....)

也许这对尝试回答问题很有用:

  • 我有一个 geojson 文件,我想将一个要素(一个区域)移动到另一个地方。为此,我试图将一个常量值与该区域的每个坐标的纬度和经度相加
  • 我认为这可以使用递归来完成,但我不确定如何

感谢任何帮助。

最佳答案

您可以使用递归函数来处理一般情况。只要检查你是否有一个列表并递归,否则返回相加的结果:

def add_to_list(l, n):
    if not isinstance(l, list):
        return l + n
    return [add_to_list(sub, n) for sub in l]
   
coordinates = [[[-15.418887, 28.180395], [-15.418887, 28.180395]],[[-15.794088, 28.018681], [-15.794088, 28.018681]]]

add_to_list(coordinates, 3)    
#[[[-12.418887, 31.180395], [-12.418887, 31.180395]], [[-12.794088, 31.018681], [[-12.794088, 31.018681]]]]

# A more general case:
add_to_list([1, [2, [5, [6]]], 3], 2)
# [3, [4, [7, [8]]], 5]

# Degenerate cases
add_to_list([], 2)
# []
add_to_list(5, 2) 
# 7

这假设您的嵌套数据将是数字或列表。

关于python - 如何遍历列表列表的列表列表...... python 中的一对坐标列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65414413/

相关文章:

c# - 如何使 C# 构造函数语法更像 pythonic?

Python:使用多处理池从外部函数更新小部件

python - 如何使用不在 BitBucket Pipelines 上的存储库中的数据

css - 水平显示 UL 列表

java - 如何在子级内部显示实体细节而不导致无限递归

algorithm - 这个算法的空间复杂度是多少?

python - PyICU 可在 Django shell 中运行,但不能在 Web 服务器上运行

list - Haskell - 无限列表 -

用于递归计算ln(n!)的java方法

javascript - 使用循环定义变量值JS