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