擅长:python、mysql、java
<p>以下是一个功能解决方案:</p>
<pre><code>text = """Joe Sam Bob
1 2 3
2 1 3
NA 2 3
3 5 NA"""
def avg( lst ):
""" returns the average of a list """
return 1. * sum(lst)/len(lst)
# split that text
parts = [line.split() for line in text.splitlines()]
#remove the headers
names = parts.pop(0)
# zip(*m) does something like transpose a matrix :-)
columns = zip(*parts)
# convert to numbers and leave out the NA
numbers = [[int(x) for x in column if x != 'NA' ] for column in columns]
# all left is averaging
averages = [avg(col) for col in numbers]
# and printing
for name, x in zip( names, averages):
print name, x
</code></pre>
<p>我在这里写了很多列表理解,这样你就可以打印出中间步骤,但这些都可能是原因的生成器。在</p>