Как записать условие несовпадения количества цифр в шестнадцатеричной и десятичной записях

Количество цифр в шестнадцатеричной и десятичной записях числа не совпадает.
Вот само задание :
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1871; 9197], которые удовлетворяют следующим условиям: − количество цифр в шестнадцатеричной и десятичной записях числа не совпадает; − остаток от деления на 9 равен 2 или 4. Найдите количество таких чисел и минимальное из них.

a=[]

for i in range(1871, 9198):
    if (len(hex(i)[2:]) != len(str(i)) and (i%9 == 2 or i%9 == 4)):
        a.append(i)

print(len(a),(min(a)))

Ответы (2 шт):

Автор решения: Beret
a=[]
for i in range(1871, 9198):
    if (len(hex(i)[2:]) != len(str(i)) and (i%9 == 2 or i%9 == 4)):
        a.append(i)
print(len(a),(min(a)))
#Спасибо CrazyElf
 
→ Ссылка
Автор решения: Алексей Р

Немного оптимизировал код за счет сужения диапазона, исключения проверок на длину чисел и сокращение операций нахождения остатка + сэкономил память на списке

diap = 1871, 9198  # десятичных цифр всегда 4 в этом диапазоне
amount, min_n, rest = 0, None, {2, 4}  # вместо списка заводим переменные, где будут кол-во чисел и минимум
for i in range(diap[0], min(diap[1], 16 ** 3)):  # ограничиваем диапазон сверху, чтобы не проверять кол-во цифр
    if i % 9 in rest:  # чтобы не находить дважды остаток от деления
        amount += 1
        if min_n is None:
            min_n = i  # поскольку диапазон возрастает, то для минимума достаточно взять первое подходящее число
print(f'Кол-во: {amount}, минимальное: {min_n}')
Кол-во: 494, минимальное: 1874
→ Ссылка