Average Number Of Characters Per Word In A List
I'm new to python and i need to calculate the average number of characters per word in a list using these definitions and helper function clean_up. a token is a str that you get f
Solution 1:
Let's clean up some of these functions with imports and generator expressions, shall we?
import string
defclean_up(s):
# I'm assuming you REQUIRE this function as per your assignment# otherwise, just substitute str.strip(string.punctuation) anywhere# you'd otherwise call clean_up(str)return s.strip(string.punctuation)
defaverage_word_length(text):
total_length = sum(len(clean_up(word)) for sentence in text for word in sentence.split())
num_words = sum(len(sentence.split()) for sentence in text)
return total_length/num_words
You may notice this actually condenses to a length and unreadable one-liner:
average = sum(len(word.strip(string.punctuation)) for sentence in text for word in sentence.split()) / sum(len(sentence.split()) for sentence in text)
It's gross and disgusting, which is why you shouldn't do it ;). Readability counts and all that.
Solution 2:
This is a short and sweet method to solve your problem that is still readable.
defclean_up(word, punctuation="!\"',;:.-?)([]<>*#\n\\"):
return word.lower().strip(punctuation) # you don't really need ".lower()"defaverage_word_length(text):
cleaned_words = [clean_up(w) for w in (w for l in text for w in l.split())]
returnsum(map(len, cleaned_words))/len(cleaned_words) # Python2 use float>>> average_word_length(['James Fennimore Cooper\n', 'Peter, Paul and Mary\n'])
5.142857142857143
Burden of all those preconditions falls to you.
Post a Comment for "Average Number Of Characters Per Word In A List"