sobre listas
Marcos Sánchez Provencio
rapto en arrakis.es
Mie Ago 20 10:41:11 CEST 2003
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
Más información sobre la lista de distribución Python-es