Python如何从指定值开始反向遍历反转后的列表?
解决方法
首先明确需求:你需要遍历的年份顺序是 2020 → 2021 → 2022,基于原降序列表dates = [2022,2021,2020,...],可以用以下几种方式实现:
方法1:直接按目标年份范围遍历
如果目标年份是固定的2020到2022,无需依赖列表索引,直接生成范围即可:
for year in range(2020, 2023): print(year) # 输出2020、2021、2022
方法2:基于原列表切片+反转
原列表中2020、2021、2022是前3个元素(索引0、1、2),切片取出后反转就能得到目标顺序:
# 取原列表前3个元素,反转后遍历 for year in reversed(dates[:3]): print(year)
dates[:3]得到[2022,2021,2020]reversed()反转后生成迭代器,遍历即得到2020→2021→2022
方法3:基于反转后的列表定位索引
如果需要通过反转后的列表操作,先找到目标年份的索引再遍历:
# 先把反转后的迭代器转成列表 reversed_dates = list(reversed(dates)) # 找到2020和2022的索引 start_idx = reversed_dates.index(2020) end_idx = reversed_dates.index(2022) + 1 # range是左闭右开,所以+1 # 遍历目标区间 for year in reversed_dates[start_idx:end_idx]: print(year)
为什么你之前的尝试无效?
reversed(range(3, len(dates))) 生成的是从len(dates)-1倒序到3的索引,对应原列表中靠后的旧年份,完全偏离了你要的2020-2022范围,所以不能这样用。
内容的提问来源于stack exchange,提问作者DiegoEwin
相关产品推荐
相关产品推荐

