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

如何从列表末尾开始每隔一个元素将其值乘以2?

解决列表从末尾步长-2元素乘2的问题

需求说明

从列表末尾开始,以步长-2选取元素并将其乘以2。示例:

a = [1, 2, 3, 4, 5, 6, 7] 
# 期望得到结果 a = [2, 2, 6, 4, 10, 6, 14]

问题代码

用户尝试了两种方法但未达到预期效果:

a = [1, 2, 3, 4, 5, 6, 7]
a = [i*2 for i in a[-1::-2]]
print(a)

# or
a = [1, 2, 3, 4, 5, 6, 7]
for i in a[-1::-2]:
    i *= 2
# 返回结果仅为 14, 10, 6, 2

问题分析

  • 第一种方法:列表推导式直接生成了仅包含目标元素乘2的新列表,丢失了原列表中其他位置的元素,不符合需求。
  • 第二种方法:遍历的i是原列表元素的副本,修改i不会对原列表产生任何影响,所以原列表没有变化。

解决方案

方法一:通过索引直接修改原列表

直接遍历目标位置的索引,对原列表对应位置的元素进行修改:

a = [1, 2, 3, 4, 5, 6, 7]
# 生成从末尾开始、步长-2的索引序列
for idx in range(len(a)-1, -1, -2):
    a[idx] *= 2
print(a)  # 输出: [2, 2, 6, 4, 10, 6, 14]

方法二:列表推导式保留原结构

利用枚举获取索引和元素,判断索引是否属于目标位置,再决定是否乘2:

a = [1, 2, 3, 4, 5, 6, 7]
# 目标索引的奇偶性与最后一个元素索引一致(列表长度为7时,最后索引是6,偶数)
a = [num * 2 if idx % 2 == (len(a)-1) % 2 else num for idx, num in enumerate(a)]
print(a)  # 输出: [2, 2, 6, 4, 10, 6, 14]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:50:06