qvayne 2022-07-08 18:40 采纳率: 84.6%
浏览 29
已结题

问一点集合和列表的区别问题


a=list(range(10))
for i in a:
    a.remove(i)
    print(a)

这样不会报错,但是下面会报错

a=set(range(10))
for i in a:
    a.remove(i)
    print(a)

想知道为什么列表在for循环时长度改变不会报错,但是集合会报错

  • 写回答

2条回答 默认 最新

  • 老师我作业忘带了 2022年度博客之星人工智能领域TOP 2 2022-07-08 22:19
    关注

    首先你的第一份代码 a.remove(i) a是列表 a有remove(i)这个方法 第二份a是个集合 集合没有remove 可以用a.discard(元素)
    其次第一份代码按照从左到右的顺序删除的话,应该是删除不完列表里全部元素的,因为比如[1,2,3] 当你用索引0删除第0个元素1时,下一次用索引1删除第一个元素[2,3] 此时3是索引为1的元素,2就剩下了。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月9日
  • 已采纳回答 7月9日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏