木星zz 2024-04-25 23:33 采纳率: 0%
浏览 3

python列表问题

代码目的:遍历列表中的元素,如果元素为0,则在该元素前加“200”,如果元素非0,则在该元素前加“19”。请问下各位,为什么这个输出修改后的列表中0元素为190,而不是2000?


list1=[88,0,90,98,00,99]

for i in range(len(list1)):
    if list[i] != 0:
        list1[i]="19"+str(list1[i])
    else:
        list1[i]="200"+str(list1[i])
print(list1)

输出结果为:['1988', '190', '1990', '1998', '190', '1999']

  • 写回答

8条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-25 23:33
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的代码中,当遇到列表中的0时,问题出在字符串连接的部分。Python在处理字符串连接时,会将所有涉及的项转换为字符串类型。在这个例子中,"200" 是一个字符串,而 list1[i](即使它是0)也会被自动转换成字符串 "0"。因此,当你尝试执行 "200" + str(list1[i]) 这样的操作时,实际上是在进行两个字符串的拼接,而非数字相加。

    解决这个问题的方法是,在添加前缀之前,确保将数字转换为整数。下面是修复后的代码:

    list1 = [88, 0, 90, 98, 00, 99]
    
    for i in range(len(list1)):
        # 将元素转换为整数,然后再与前缀拼接
        if list1[i] == 0:
            list1[i] = "200" + str(int(list1[i]))
        else:
            list1[i] = "19" + str(list1[i])
    
    print(list1)
    

    运行这段代码后,你会得到期望的结果:

    ['1988', '2000', '1990', '1998', '2000', '1999']
    

    这样,列表中的每个元素都正确地添加了前缀,包括0元素,它被正确地转换成了 2000

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月25日

悬赏问题

  • ¥15 急,ubuntu安装后no caching mode page found等
  • ¥15 联想交换机NE2580O/NE1064TO安装SONIC
  • ¥15 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 win10电脑安装完plcsim advanced4.0运行时为什么会提示找不到虚拟网卡
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,