【发布时间】:2017-08-19 15:19:14
【问题描述】:
我的计划是删除 0 到 1000 中少于两位数的所有数字。 我正在这样做:
numbers = range(0,1001)
#check for two or more digits
for number in numbers:
if len(str(number)) < 2:
numbers.remove(number)
当我检查我的数组时,它仍然包含这些数字“1、3、5、7、9”。 这是为什么呢?
【问题讨论】:
-
Iirc,在迭代列表时从列表中删除通常会导致不良结果。为什么不使用过滤列表推导?
-
完成@Carcigenicate的评论:
[i for i in range(0, 1001) if len(str(i)) >= 2] -
我试图记住发布答案的语法:0。太久没写了。
-
@Carcigenicate Here's a nice refresher 如果您想重新回到游戏中。如果您想在 Python 标记中回答此类问题,您将需要它 ;-)
-
从您正在迭代的列表中删除项目通常是不安全的,除非您向后迭代。这很像锯掉你坐在的树枝。 ;) 详情请见here。
标签: python arrays python-2.7 numbers