enumerate() ——循环同时枚举元素和index

来源:互联网 发布:g76m16f1.0内螺纹编程 编辑:程序博客网 时间:2024/06/06 21:44

探索legislators数据中每个性别中最常见的名字

enumerate

  • 看一个小例子:

在这个例子中,利用了python的 enumerate() 函数同时循环了两个变量,一个是序号,一个元素。

animals = ["Dog", "Tiger", "SuperLion", "Cow", "Panda"]viciousness = [1, 5, 10, 10, 1]for i, animal in enumerate(animals):    print("Animal Index")    print(i)    print("Animal")    print(animal)
  • 像下面这样串联两个list也是可以的
animals = ["Dog", "Tiger", "SuperLion", "Cow", "Panda"]viciousness = [1, 5, 10, 10, 1]for i, animal in enumerate(animals):    print("Animal")    print(animal)    print("Viciousness")    print(viciousness[i])

Counting Up Female Names

探索legislators数据中Female在1940后最常见的名字

name_counts = {}for row in legislators:    gender = row[3]    year = row[7]    if gender == "F" and year > 1940:        name = row[1]        if name in name_counts:            name_counts[name] = name_counts[name] + 1        else:            name_counts[name] = 1

关键字None

  • 看一个小例子:
values = [50, 80, 100]max_value = 0for i in values:    if i > max_value:        max_value = i

这是我们常见的求解最大值的方法,但是这个答案是错的,因为最终答案是0,而0并不在数组中,此时应该修改为None,None对象是一个特殊类型的对象(NoneType)。

  • 并且在判断一个对象是否为None时,不是用==而是用 var is None这种语法。
values = [-50, -80, -100]max_value = Nonefor i in values:    if max_value is None or i > max_value:        max_value = i
  • 当你需要将一个数据与另一个数据进行比较时,最好先判断这个数据是否为None:]
max_value is None or i > max_value

Highest Female Name Count

max_value = Nonefor k in name_counts:    count = name_counts[k]    if max_value is None or count > max_value:        max_value = count
  • 上面这个只是获取了count也就是最常见的名字的数量(得到是2),并不是这个名字,因此需要进行修改。
top_female_names = []top_female_names = [k for k in name_counts if name_counts[k] == 2]

Finding The Most Common Male Names

top_male_names = []male_name_counts = {}for row in legislators:    if row[3] == "M" and row[7] > 1940:        name = row[1]        if name in male_name_counts:            male_name_counts[name] = male_name_counts[name] + 1        else:            male_name_counts[name] = 1highest_value = Nonefor name,count in male_name_counts.items():    if highest_value is None or count > highest_value:        highest_value = countfor name,count in male_name_counts.items():    if count == highest_value:        top_male_names.append(name)
0 0