def replace():
  '''Using try-except'''
  myl = [1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 6, 9, 4, 2, 2, 22, 99, 0, 100, 100, 34, 55]
  # myl.extend ([100] * 100)
  while True: 
    try: 
      myl[ myl.index (4) ] = 44 
    except: 
      break

def replace2():
  '''Using slice-assign''' 
  myl = [1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 6, 9, 4, 2, 2, 22, 99, 0, 100, 100, 34, 55]
  # myl.extend ([100] * 100)
	
  myl[:] = [x if x != 4 else 44 for x in myl]

def replace3():
  '''Using enumerate'''
  myl = [1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 6, 9, 4, 2, 2, 22, 99, 0, 100, 100, 34, 55]
  # myl.extend ([100] * 100)
	
  for idx, item in enumerate(myl): 
    if item == 4:
        myl[idx] = 44
        
import timeit
#print(timeit.timeit("test()", setup="from __main__ import test"))
print(timeit.timeit("replace()", setup="from __main__ import replace")), replace.func_doc
print(timeit.timeit("replace2()", setup="from __main__ import replace2")), replace2.func_doc
print(timeit.timeit("replace3()", setup="from __main__ import replace3")), replace3.func_doc
