python list maxElem() 最大の要素 一番多い要素

関数を自作しました。汎用性が高いと思うので貼っておきます。

def maxElem( lis ):
  '''
  与えられたリストの中に、最も多く存在する要素を返す
  (最大の数の要素が複数ある場合、pythonのsetで先頭により近い要素を返す)
  '''
  L = lis[:]#copy
  S = set(lis)
  S = list(S)
  MaxCount=0
  ret='nothing...'

  for elem in S:
    c=0
    while elem in L:
      ind = L.index(elem)
      foo = L.pop(ind)
      c+=1
    if c>MaxCount:
      MaxCount=c
      ret = elem
  return ret

例えば引数のリストが以下のような場合、戻り値は'1'になります。

['1', '1', '17', '51', '1', '17', '17', '58', '17', '1', '1', '1', '1', '1', '1', '1', '54', '54', '1', '1', '1', '1', '1', '1', '1', '1', '54', '1', '32', '32', '1', '51', '51', '51', '54', '51', '1', '1', '1', '1', '1', '54', '54', '54', '54', '1', '1', '1', '1', '1', '1', '22', '1', '54', '1', '58', '58', '51', '51', '51', '1', '7', '51', '1', '54', '32', '1', '1', '7', '1', '54', '54', '1', '1', '1', '1', '1', '1', '1', '31', '31']

リストの要素は数値や文字列が混ざっていても大丈夫です。