【问题标题】:can not understand average age caculating无法理解平均年龄计算
【发布时间】:2014-10-17 19:15:16
【问题描述】:

我是 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

问题:

  1. ages =[ ] 是什么意思?
  2. age = people[1] 是什么意思?
  3. ages.append(age) 是什么意思?

【问题讨论】:

  • 1.分配 2. 索引 3. append 方法调用 ages 列表。
  • 1.创建一个名为 ages 的空列表,用于将年龄存储在 2 中。获取元组的第二个元素并分配给年龄 3。将年龄附加到 ages 列表

标签: python append average


【解决方案1】:

您可能会发现直接展开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

你可以使用list comprehension:

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

【讨论】:

    【解决方案2】:
    ages=[]
    

    表示您创建了一个名为年龄的空列表。该列表中没有任何元素。

    age=person[1]
    

    是一项分配,您可以将第一个元素的值亲自分配给年龄。

    ages.append(age)
    

    将值年龄附加到年龄列表中。 现在,当您打印年龄列表时,您可以看到年龄中的值已附加到它上面。

    ages=[]
    ages.append(3)
    ages.append(4)
    print ages
    

    将产生一个输出

    [3,4]
    

    【讨论】:

    • 谢谢!但是对于“age = person[1]”,我理解“ages.append(age)”的意思是“42”附加到年龄。那么这段代码如何得到总和(年龄)为“42 + 36 +38” ?
    • 在年龄列表中添加年龄值后,它不再是一个空列表。 ages=[42,36,38] 现在是您附加的年龄值的列表。 sum(ages) 获取列表老化的每个值并将其添加到列表到达末尾。您也可以使用 for 循环编写它,因为 sum_of_ages=0 for value in ages: sum_of_ages+=value printsum_of_ages 将打印 42+36+38 的总数,即 116 希望对您有所帮助。
    【解决方案3】:

    年龄 =[ ] 是什么意思? 它是一个空列表,需要先创建才能插入值。

    age = people[1] 是什么意思? 这意味着只需要读取字典中的第一个占位符。

    ages.append(age) 是什么意思? 就是将每个字典条目的年龄值放入年龄列表中。

    【讨论】:

      【解决方案4】:
          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 基础教程,这样您可以自己练习并玩弄列表以了解其不同方法的行为方式。

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 2021-10-31
        • 2021-12-23
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        相关资源
        最近更新 更多