Учитывая все, что вас волнует, это уменьшение величины, рассматривали ли вы просто представление своих чисел как Decimal
с и затем печать их в научной записи?
from decimal import Decimal
nums = {Decimal(1000000), Decimal(20000000), Decimal(1234000), Decimal(1200000)}
print({str(num.normalize()) for num in nums})
# {'1E+6', '1.2E+6', '2E+7', '1.234E+6'}
Если это нецелесообразно дляваш вариант использования, тогда еще одна вещь, которую вы можете сделать, это по существу определить максимальную величину, на которую вы можете уменьшить, а затем уменьшить на столько. Для величин 10 это довольно просто, и вы можете использовать строки для этого:
nums = {1000000, 20000000, 1234000, 1200000}
div_factor = 10 ** min(len(str(num)) - len(str(num).rstrip('0')) for num in nums)
reduced_nums = {num / div_factor for num in nums}
# {1000.0, 1234.0, 20000.0, 1200.0}
# you can use integer division `//` instead of true division `/` if you want
Для нестандартных величин (например, величин 3) вам нужно проявить больше творчества и придуматьспособ эффективно определить наибольшую величину, которую вы можете разделить. В моем примере, приведенном выше, используется ярлык, проверяющий, сколько цифр исчезает, когда мы вырезаем конечные нули (что эквивалентно проверке наибольшего показателя 10, который можно разделить на целое число). Поскольку в python нет встроенного способа печати на базах, не равных 2, 8, 10 или 16, вам придется найти собственное решение.