Neste apartado afondaremos nalgunhas das operacións que se poden facer sobre unha lista, empregando métodos novos para separar cadeas, contalas, unir listas... Empregamos para iso un exercicio interesante: contar a frecuencia de palabras dun texto (a iso adicanse algúns lingüistas especializados no uso de algoritmos aplicados á lingua). Para textos longos, como un novela, é fundamental ter un algoritmo de conteo e, de feito, os procesadores de texto adoitan ter diversas funcións ao respecto.
Collamos un texto de referencia, coma por exemplo o noso himno, Os Pinos, nas dúas primeiras estrofas (e na versión de 1984):
Que din os rumorosos
na costa verdecente,
ao raio transparente
do prácido luar?
Que din as altas copas
de escuro arume arpado
co seu ben compasado
monótono fungar?
| Pasos para analizar frecuencias | Código | Resultados: print() |
|---|---|---|
| Introducir os versos nunha cadea. | cadeaPalabras = 'Que din os rumorosos na costa verdecente , ao raio transparente do prácido luar ?' |
print (cadeaPalabras) Que din os rumorosos na costa verdecente , ao raio transparente do prácido luar ? |
| Engadir máis versos | cadeaPalabras += 'Que din as altas copas de escuro arume arpado co seu ben compasado monótono fungar ?' |
print (cadeaPalabras) Que din os rumorosos na costa verdecente , ao raio transparente do prácido luar ? Que din as altas copas de escuro arume arpado co seu ben compasado monótono fungar ? |
| Separar as palabras e gardalas nunha lista mediante o método split() | listaPalabras = cadeaPalabras.split() |
print (listaPalabras) ['Que', 'din', 'os', 'rumorosos', 'na', 'costa', 'verdecente', ',', 'ao', 'raio', 'transparente', 'do', 'prácido', 'luar', '?', 'Que', 'din', 'as', 'altas', 'copas', 'de', 'escuro', 'arume', 'arpado', 'co', 'seu', 'ben', 'compasado', 'monótono', 'fungar', '?'] |
| Contamos cantas veces se repite unha palabra en toda a lista co método count() | listaPalabras.count('Que') |
print (listaPalabras.count ('Que') 2 |
| Contamos cantas veces se repite cada palabra da lista, creando unha nova lista para gardar eses datos e empregando o método append() | frecuenciaPalab = [] for i in listaPalabras: frecuenciaPalab.append(listaPalabras.count(i)) |
print (frecuenciaPalab) [2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2] |
| Agrupamos nunha lista as palabras coa súa frecuencia, empregando o método zip |
Frecuencias= list(zip(listaPalabras, frecuenciaPalab)) |
print (Frecuencias) [('Que', 2), ('din', 2), ('os', 1), ('rumorosos', 1), ('na', 1), ('costa', 1), ('verdecente', 1), (',', 1), ('ao', 1), ('raio', 1), ('transparente', 1), ('do', 1), ('prácido', 1), ('luar', 1), ('?', 2), ('Que', 2), ('din', 2), ('as', 1), ('altas', 1), ('copas', 1), ('de', 1), ('escuro', 1), ('arume', 1), ('arpado', 1), ('co', 1), ('seu', 1), ('ben', 1), ('compasado', 1), ('monótono', 1), ('fungar', 1), ('?', 2)] |
Exercicio:
- Como farías para ver as palabras en orde alfabética?
- Como farías para ver só as palabras que aparecen dúas veces ou máis?
- Engade máis estrofas e observa a diferencia no resultado
[Repl.it: Contar a frecuencia de letras texto]
Listas agrupadas: contar palabras O xogo de codificar/decodificar