|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神麻烦帮忙看下 为什么输出的时候13没有被移除
先贴问题要求:
编写程序,实现将列表 ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
中的素数去除,并输出去除素数后列表 ls 的元素个数。
下面是我写的代码
- ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
- for i in ls:
- for j in range(2,i):
- if i%j==0:
- break
- else:
- ls.remove(i)
- print(ls)
- print('长度为:',len(ls))
复制代码
你得在切片上遍历列表呀,不然一边遍历一边从里面移除数据会导致少遍历几个元素
这里附上两种方案:
- ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
- res = []
- for i in ls:
- for j in range(2,i):
- if i%j==0:
- res.append(i)
- break
- print(res)
- print('长度为:',len(res))
- ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
- for i in ls[:]:
- for j in range(2,i):
- if i%j==0:
- break
- else:
- if i in ls:
- ls.remove(i)
- print(ls)
- print('长度为:',len(ls))
复制代码
|
|