You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于LIST_A与LIST_B生成符合指定规则的目标方向列表?

方向转换需求实现方案

已知条件

我们有两个方向列表:

  • 完整顺时针方向列表:
LIST_A=['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW']
  • 需要处理的目标方向列表:
LIST_B=['E','NNE','S','SSE','SW','N']

需求说明

对LIST_B中的每个方向,需完成两步操作后返回结果:

  1. 找到该方向的相反方向(例如'E'的相反方向为'W')
  2. 将相反方向顺时针递增一步(例如'W'顺时针走一步为'WNW')
    最终需得到目标列表:
DESIRED_LIST=['WNW','SW','NNE','N','ENE','SSW']

实现思路

LIST_A是按顺时针排列的16个方向,相邻方向间隔22.5度:

  • 相反方向的位置:原方向索引 + 8(16/2=8),超出列表长度时取模16
  • 顺时针递增一步:相反方向的索引 + 1,同样取模16(列表为环形结构,最后一个方向'NNW'顺时针一步回到第一个'N')

Python代码实现

LIST_A=['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW']
LIST_B=['E','NNE','S','SSE','SW','N']

DESIRED_LIST = []
for dir in LIST_B:
    # 获取当前方向在完整列表中的索引
    original_idx = LIST_A.index(dir)
    # 计算相反方向的索引
    opposite_idx = (original_idx + 8) % 16
    # 计算顺时针递增一步后的索引
    target_idx = (opposite_idx + 1) % 16
    # 将对应方向加入结果列表
    DESIRED_LIST.append(LIST_A[target_idx])

print(DESIRED_LIST)
# 输出结果:['WNW', 'SW', 'NNE', 'N', 'ENE', 'SSW']

代码解释

  1. 遍历LIST_B中的每个方向,用LIST_A.index(dir)获取其在完整列表中的位置
  2. 相反方向的位置通过原索引加8后取模16得到,确保索引不会超出列表范围
  3. 顺时针递增一步只需在相反方向索引基础上加1再取模16,适配环形方向结构
  4. 最后将对应索引的方向添加到结果列表即可

内容的提问来源于stack exchange,提问作者GDog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:55:21