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
相关产品推荐
相关产品推荐

