【发布时间】:2019-02-03 02:28:42
【问题描述】:
我想要代码做的是打印包含以下数字的列表:
- 2 位或 3 位数字的乘积
- 回文
- 在 [101101, 1000000) 范围内。
最终列表中应该没有5位数字和一些6位数字,因为它们小于101101。但处理后仍有一些5位数字。为什么会这样?
list1 = []
for i in range(100, 1000):
for j in range(100, 1000):
if str(i*j) == str(i*j)[::-1]: # checking for palindrome
list1.append(i*j)
list1 = list(set(list1)) # removing duplicates
print(sorted(list1))
# print(len(list1))
for ii in list1: # removing numbers, out of range
if ii < 101101 or ii >= 1000000:
list1.remove(ii)
print(sorted(list1))
# print(len(list1))
但是当我使用集合来移除超出范围的元素时,它可以工作。下面给出的代码可以完成这项工作。
set1 = set(range(10000, 101102))
list1 = list(set(list1) - set1)
但我不明白,为什么前面的代码无法打印所需的输出?
编辑:正如你们中的一位所建议的那样,是的,它是 this 的副本。不检查现有银行的问题是我的坏事。
【问题讨论】:
-
啊。期望和期望之间的细微差别。
-
@MadPhysicist 这要挂在我的墙上了,谢谢
-
@Milan 我要收藏这个问题,这样当这句话流行起来时,我可以指点这里的人看看起源。至少这是预期的结果;)
-
@MadPhysicist 确实不错。
标签: python python-3.x list