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

如何用Python实现列表半数元素翻转后重组得到目标序列

实现逻辑

你要的功能本质是:保留列表所有偶数索引(从0开始计数)的元素不变,提取所有奇数索引的元素翻转后,再依次填回原奇数索引位置即可。你给出的示例完全符合这个逻辑:

示例输入奇数索引元素为 [8, 2, 18, 0],翻转后为 [0, 18, 2, 8],替换回原奇数位置后正好得到你要的输出结果。

修改后的代码
def flip_half(lst):
    # 先拷贝原列表,避免修改传入的原始列表
    res = lst.copy()
    # 提取所有奇数索引元素并翻转
    odd_elements = res[1::2]
    reversed_odd = odd_elements[::-1]
    # 将翻转后的元素依次赋值回奇数索引位置
    for idx, pos in enumerate(range(1, len(res), 2)):
        res[pos] = reversed_odd[idx]
    return res

# 测试用例
test_list = [1, 8, 7, 2, 9, 18, 12, 0]
print(flip_half(test_list))
# 输出:[1, 0, 7, 18, 9, 2, 12, 8]
注意事项
  • 不要用list作为参数名,它是Python内置类型的关键字,会覆盖原有功能导致后续报错
  • 如果你不需要保留原列表,可以直接修改传入的列表,不需要做copy操作
  • 该实现兼容长度为奇数的列表,最后一个偶数索引的元素会保留不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:01