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

Python列表修改问题求助:按k奇偶性改索引值却输出全1

问题解决:列表索引赋值错误导致全1输出

需求:输入n和k,初始化一个长度为n、全为0的列表L。若k为偶数,将列表偶数索引位置的值改为1;若k为奇数,将列表奇数索引位置的值改为1。但运行代码后输出全为1(示例:['1','1','1','1'])。

错误代码:

n=int(input())
k=int(input())

L=[0]*n
   for i in range(len(L)):
      if(k%2==0):
         L[i]='1'

      elif(k%2!=0):
         L[i]='1'


print(L)

问题分析

你的代码完全没对索引的奇偶性做判断!不管k是奇是偶,循环里每一次都直接把L[i]设为'1',自然输出全是1。要实现需求,必须在判断k的奇偶后,再检查当前索引i的奇偶性,只修改符合条件的索引位置。

修正后的代码

写法一:基础循环版

n = int(input())
k = int(input())

L = [0] * n
for i in range(len(L)):
    if k % 2 == 0:
        # k为偶数,仅修改偶数索引(Python索引从0开始)
        if i % 2 == 0:
            L[i] = '1'
    else:
        # k为奇数,仅修改奇数索引
        if i % 2 != 0:
            L[i] = '1'

print(L)

写法二:简洁列表推导式版

n = int(input())
k = int(input())

# 根据k和索引i的奇偶性直接生成目标列表
L = ['1' if (k % 2 == 0 and i % 2 == 0) or (k % 2 != 0 and i % 2 != 0) else 0 for i in range(n)]
print(L)

补充说明

Python的列表索引从0开始,所以偶数索引对应0、2、4...位置,奇数索引对应1、3、5...位置,和日常计数的奇偶逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:24:38