无法理解平均年龄计算
我刚开始学习Python,正在阅读以下代码:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = []
for person in people:
age = person[1]
ages.append(age)
avg_age = sum(ages) / len(people)
print "Average age:", avg_age
问题:
ages = [ ]
是什么意思?age = people[1]
是什么意思?ages.append(age)
是什么意思?
4 个回答
0
ages =[ ] # creating an empty list
age = people[1] # is assigning the value of first element of your list(people)
ages.append(age) # you are adding the value of age to your second list (ages)
我建议你先看看一些Python的基础教程,这些教程里有很多例子。这样你可以自己动手练习,试着玩玩列表,了解它的各种方法是怎么工作的。
0
如果你直接展开people
里的子列表,可能会更容易理解:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = []
for person, age in people:
ages.append(age)
avg_age = sum(ages) / len(people)
print "Average age:", avg_age
你还可以使用列表推导式:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = [age for person, age in people]
avg_age = sum(ages) / len(people)
print "Average age:", avg_age
因为在你的列表推导式中没有使用到person
,所以你可以直接省略它:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = [age for _, age in people]
avg_age = sum(ages) / len(people)
print "Average age:", avg_age
最后,如果你把其中一个元素变成浮点数,你会得到更好的平均值。这里有一种方法:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = [age for _, age in people]
avg_age = sum(ages) / float(len(people))
print "Average age:", avg_age
还有另一种方法:
people = [ [ 'John', 42 ], [ 'James', 36 ], [ 'Sue', 38 ] ]
ages = [float(age) for _, age in people]
avg_age = sum(ages) / len(people)
print "Average age:", avg_age
0
ages = [ ] 这是什么意思? 这表示创建了一个空的列表,必须先创建这个列表,才能往里面添加值。
age = people[1] 这是什么意思? 这表示只需要读取字典中的第一个占位符。
ages.append(age) 这是什么意思? 这表示把每个字典条目的年龄值放进 ages 列表里。
0
ages=[]
这表示你创建了一个名为 ages 的空列表。这个列表里面没有任何元素。
age=person[1]
这是一个赋值操作,你把 person 中第一个元素的值赋给 ages。
ages.append(age)
把 age 的值添加到 ages 列表中。 现在当你打印 ages 列表时,可以看到 age 的值已经被添加进来了。
ages=[]
ages.append(3)
ages.append(4)
print ages
将会输出
[3,4]