Не уверен, что это все еще актуально, но такое же поведение имеет место и для словарей. Посмотрите на этот пример.
a = {'par' : [1,21,3], 'sar' : [5,6,8]}
b = a
c = a.copy()
a['har'] = [1,2,3]
a
Out[14]: {'har': [1, 2, 3], 'par': [1, 21, 3], 'sar': [5, 6, 8]}
b
Out[15]: {'har': [1, 2, 3], 'par': [1, 21, 3], 'sar': [5, 6, 8]}
c
Out[16]: {'par': [1, 21, 3], 'sar': [5, 6, 8]}
Предположим, что f * h есть O (g * h). Тогда существуют такие x0, c, что f (x) * h (x) = c * g (x) * h (x) для всех x> = x0. Поскольку h всегда положительно, h (x) положительно, и мы можем делить обе части неравенства без изменения знака. Это дает f (x) < = c * g (x). Следовательно, f * h в O (g * h) влечет f в O (g).
То, что мы только что доказали, является правдоподобным. Ваше требование доказать следующее:
, если f не O (g), то f * h не O (g * h)
blockquote>показано:
, если f * h равно O (g * h), то f равно O (g)
blockquote>Поскольку все логические утверждения логически эквивалентны их В противоположность этому, ваше утверждение также верно. Вы можете рассуждать напрямую, умножая одну сторону неравенства на единицу h (x) / h (x), а затем умножая на h (x); но я думал, что отмена делением была более ясной.