sobre listas

Sonia siosss en ono.com
Jue Ago 21 04:20:38 CEST 2003


dejo mi version a ver si hay mucha cosa mal
recuerdo q el enunciado es , dada una cadena de palabras, mostrar las
palabras q contienen la letra mas frecuente de esa cadena

mi version(tradicional):

(el join si q lo habia dado , lo demas nada de nada)


def frecuencia(lista):
  lista_todo=''.join(lista)
  #lista_todo=[pepedaleamigoernesto]
  #busco el caracter + frecuente en lista_todo
  #voy a lista y saco las palabras q contienen ese caracter

  max=0
  letra_max=[]
  lista_rdo=[]
  cont=1 #pq si la letra esta (minimo 1)
  for letra1 in range(0,len(lista_todo)):
    for letra2 in range(0,len(lista_todo)):
      #compara la 1 letra con todas...la 2º con todas...
      if lista_todo[letra1]==lista_todo[letra2]:
        cont=cont+1
    if cont>max:
      max=cont
      letra_max=lista_todo[letra1]
    cont=0
  for palabra in lista:
    for letra in palabra:
      if palabra[letra]==letra_max:
        lista_rdo.append(lista[palabra])
  return lista_rdo

#el ultimo for , no se si podria ser tb:
#for letra_max[0] in palabra:
#lista_rdo.append(lista[palabra])

lista=['pepe','dele','amigo','ernesto']




----- Original Message -----
From: Marcos Sánchez Provencio <rapto en arrakis.es>
To: La lista de python en castellano <python-es en aditel.org>
Sent: Wednesday, August 20, 2003 3:41 AM
Subject: Re: [Python-es] Re: sobre listas


> Ya sí :-)
>
> def map(funcion,lista):
>      ret=[]
>      for elem in lista:
>          ret.append(funcion(elem))
>      return ret
>
> def count(lista, buscado):
>      ret=0
>      for elem in lista:
>          if elem==buscado:
>              ret=ret+1
>      return ret
>
> def index(lista, buscado):
>      n=0
>      for elem in lista:
>          if elem==buscado:
>              return n
>          n=n+1
>      return -1
>
> if __name__=='__main__':
>      lista=['uno','dos','dos','tres','tres','tres']
>      def fun(s):
>          return s*2
>      print 'map', map(fun,lista)
>      print 'count', count(lista,'dos')
>      print 'index', index(lista,'tres')
>
> Sonia wrote:
> > demasiado para mi. en mi temario no entra ni map, ni count,  ni index ni
> > nada de eso. lo tendre q hacer po metodo tradicional (y largo)
> > ahora lo intento!
> >
> >
> > ----- Original Message -----
> > From: Chema Cortés <ch3m4 en ch3m4.org>
> > To: <python-es en aditel.org>
> > Sent: Tuesday, August 19, 2003 9:30 AM
> > Subject: [Python-es] Re: sobre listas
> >
> >
> >
> >>Chema Cortés escribió:
> >>
> >>
> >>>Una solución algo más bestia, pero que también valdría para unicodes:
> >>>
> >>>frec = [ todo.count(c) for c in todo ]
> >>>letra = todo[frec.index(max(frec))]
> >>
> >>Tomando un café me ha venido la inspiración de algunas versiones "menos
> >>bestias", válidas para unicodes. Ya advierto que algunas son bastantes
> >>complicadas:
> >>
> >>listapal = ['hola','mundo','otra','vez',u'\N{EURO SIGN}'*10]
> >>todo = ''.join(listapal)
> >>
> >>####
> >>#versión 1
> >>
> >>keys=dict.fromkeys(todo).keys()  #nuevo en python 2.3
> >>frec=[ todo.count(k) for k in keys ]
> >>letra=keys[frec.index(max(frec))]
> >>
> >>####
> >>#versión 2
> >>
> >>D=dict.fromkeys(todo)  #nuevo en python 2.3
> >>for k in D.keys():
> >>     D[k]=todo.count(k)
> >>letra=[ k for k,v in D.items() if v==max(D.values()) ][0]
> >>
> >>####
> >>#versión 3, que funciona también en python 2.2.x
> >>
> >>keys=[]
> >>
> >>frec=[ todo.count(c) for c in todo
> >>        if c not in keys and not keys.append(c) ]
> >>
> >>letra=keys[frec.index(max(frec))]
> >>
> >>####
> >>#versión 4 "Absurda", pero va también en python 2.2.2
> >>
> >>keys=[ c for c in todo if c not in locals()['_[1]'].__self__ ]
> >>frec=[ todo.count(k) for k in keys ]
> >>letra=keys[frec.index(max(frec))]
> >>
> >># Explicación:
> >># http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/204297
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es




Más información sobre la lista de distribución Python-es