青春奔跑不裸奔323 2023-04-08 10:08 采纳率: 100%
浏览 11
已结题

remove一行代码为什么会出错,请教(语言-python)



```poke = []
a = ['♠', '♥', '♦', '♣']
b = ['A', "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
for i in range(4):
    for j in range(13):
        poke.append(a[i] + b[j])
poke.append('JOKER')
poke.append('joker')
liss = []
liss.append(random.sample(poke, 17))
print(liss)
for i in liss:
     poke.remove(i)


系统提示,x not in  the list
  • 写回答

3条回答 默认 最新

  • Leodong. 2023-04-08 10:57
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    在您的代码中,liss 是一个包含一个列表的列表,即 [[选出的17张牌]]。因此,在 for 循环中,i 实际上是一个列表,而不是单个元素。当您尝试将 ipoke 列表中删除时,会出现 x not in the list 的错误,因为 poke 列表中并没有一个与 i 相同的列表对象。

    为了解决这个问题,您可以使用 extend() 方法将 liss 列表中的元素直接添加到 poke 列表中,而不是将 liss 列表作为一个元素添加到 poke 列表中。修改后的代码如下所示:

    import random
    
    poke = []
    a = ['♠', '♥', '♦', '♣']
    b = ['A', "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
    for i in range(4):
        for j in range(13):
            poke.append(a[i] + b[j])
    poke.append('JOKER')
    poke.append('joker')
    
    liss = []
    liss.extend(random.sample(poke, 17))
    print(liss)
    
    for i in liss:
         poke.remove(i)
    
    print(poke)
    

    在修改后的代码中,使用 extend() 方法将 liss 列表中的元素添加到 poke 列表中。然后,循环中的 i 就变成了一个单独的字符串元素,可以正确地从 poke 列表中删除。

    希望这能帮助您解决问题。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题