Python LP (2014)

Apunte Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería Informática - 3º curso
Asignatura LP (Llenguatges de Programació)
Año del apunte 2014
Páginas 5
Fecha de subida 06/12/2014
Descargas 2
Subido por

Vista previa del texto

# e2.py #!/usr/bin/python # -*- coding: utf-8 -*# 2. Feu una funcio que calculi el m`axim d’una llista no buida.
def tg(a, b): if a > b: return a else: return b def tgL (llista): return reduce (tg, llista, 0) l = [1,2,3,4,5] print tgL(l) #e3.py #!/usr/bin/python # -*- coding: utf-8 -*# 3. Feu una funcio que calculi la mitjana d’una llista no buida.
def med (llista): return (sum(llista)/(len(llista))) l = [1,0,1,0,1,0,88] print med(l) #e4.py #!/usr/bin/python # -*- coding: utf-8 -*#4. Feu una funcio que aplana una llista de llistes produint una llista d’elements.
#Per exemple, si rep [[2,6],[8,1,4],[],[1]] torna [2,6,8,1,4,1]. Milloreu la funci ó #per a que pugui tractar llistes amb diferents nivells i si rep [3,[4,[],[5,3]],[2,1]] #torni [3, 4, 5, 3, 2, 1]. Pista: feu-la recursiva usant el isinstance.
def aplana(llista): res = [] for l in llista: if isinstance(l, list): l = aplana(l) res = res + l else: res.append(l) return res llistaDeProva = [[0,1],[[2,3],[4,5,6]],[],[7,8,9]] print aplana(llistaDeProva) #e5.py #!/usr/bin/python # -*- coding: utf-8 -*#5. Feu un funcio que insereix un element # en una llista ordenada creixentment.
def insertOnOrderedList(llista, element): for i in range(len(llista)): if llista[i] > element: llista.insert(i, element) return llista.insert(len(llista), element) llistaOrdenada = [1,2,4,5,7,9] element1 = 3 element2 = 6 element3 = 8 element4 = 11 print llistaOrdenada insertOnOrderedList(llistaOrdenada, element1) print llistaOrdenada insertOnOrderedList(llistaOrdenada, element2) print llistaOrdenada insertOnOrderedList(llistaOrdenada, element3) print llistaOrdenada insertOnOrderedList(llistaOrdenada, element4) print llistaOrdenada # e6.py #!/usr/bin/python # -*- coding: utf-8 -*#Feu una funci ́ o que, donada una llista d’enters, #retorni dues llistes, una #que cont é els parells i una que cont é els senars.
def separaMod2(original, parells, senars): for e in original: if e%2 == 0 : parells.append(e) else: senars.append(e) llistaOrdenada = [1,2,4,5,7,9] print llistaOrdenada p = [] s = [] separaMod2(llistaOrdenada, p, s) print p print s # e8.py #!/usr/bin/python # -*- coding: utf-8 -*#Programeu l’algorisme d’ordenaci ó mergesort.
#Per aix`o, programeu inicialment la mescla ordenada.
def separa(llista, l, r): half = len(llista)/2 for i in range(len(llista)): if i < half: l.append(llista[i]) else: r.append(llista[i]) def merge(l, r): maxsize = max(len(l), len(r)) res = [] int i = 0 while i < maxsize: if i > len(l): res.append(r[i]) else if i > len(r): res.append(l[i]) if(l[i] > r[i]) res.append(r[i]) else if(l[i] < r[i]) res.append(l[i]) i += 1; def mergesort(llista): if len(llista) == 1: return llista[0]; l = [] r = [] separa(llista, l, r) llista = merge(mergesort(l), mergesort(r)) listtomerge = [1,6,3,54,7,3,2] print listtomerge mergesort(listtomerge) print listtomerge # e9.py #!/usr/bin/python # -*- coding: utf-8 -*#quicksort #Programeu l’algorisme d’ordenaci ó quicksort. Useu funcions d’ordre su#perior o llistes per comprensi o.
́ def separa(llista, l, r): half = len(llista)/2 for i in range(len(llista)): if i < half: l.append(llista[i]) else: r.append(llista[i]) def merge(l, r): maxsize = max(len(l), len(r)) res = [] int i = 0 while i < maxsize: if i > len(l): res.append(r[i]) else if i > len(r): res.append(l[i]) if(l[i] > r[i]) res.append(r[i]) else if(l[i] < r[i]) res.append(l[i]) i += 1; def quicksort(llista): if len(llista) == 1: return llista[0]; l = [] r = [] separa(llista, l, r) llista = merge(quicksort(l), quicksort(r)) listtosort = [1,6,3,54,7,3,2] print listtosort quicksort(listtosort) print listtosort Powered by TCPDF (www.tcpdf.org) ...