Код, который я хочу сделать, - это распечатать список, содержащий цифры:
- произведение 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)
Но я не понимаю, почему предыдущий код не может распечатать желаемый вывод?
Редактировать: Как сказал один из вас, да, это дубликат этого . Мой плохой за то, что не проверял вопрос в существующем банке.