【Python每日作业】Day4:写一个函数统计传入的列表中每个数字出现的次数并返回对应的字典。

419 阅读2分钟

大家好,我是 bug,一个普通程序员。

程序员的快速成长,在于多练习,多输出,多分享,多链接。

怎奈执行力太差,错过了很多好的机会。

什么时候开始都不算晚,欢迎大家关注,见证一个普通程序员的成长之路。

这里先立个 Flag,参加 涛哥聊Python技术圈 知识星球的每日作业打卡,先坚持 7 天。

问题:

Day4 Q16: 写一个函数统计传入的列表中每个数字出现的次数并返回对应的字典。

解决:

解决这个问题,要先从题面的信息入手。 关键字为列表、数字、字典。

分析可知:

  1. 函数入参类型为列表,需学习下 Python 的特征和常用函数。
  2. Python 列表的元素类型,不同于 Java 需要提前声明,每个元素可以是不同的数据类型。本题中做了限制,列表所有元素都为数字。为方便统计,假设列表中元素都为整型数字。
  3. 函数返回值用字典,字典是 Python 中特有的数据结构,也需要学习下。

学习完毕,开始解题。 解题思路:

  1. 统计列表中每个元素出现的次数,需要对列表进行遍历,用 for 循环。
  2. 对于每个元素,要在字典中记录出现的次数。
  3. 需判断元素在字典的键中是否已存在,用 if 结合 list 的 contains() 函数判断。

统计 list 元素出现次数,有两种方式:

  1. 手动统计。
  2. 利用 list 的 count 函数查询。

算法的角度考虑,不知道有没有效率更高的方式, 有懂的大佬欢迎评论指导下。

# Q16: 题目013:写一个函数统计传入的列表中每个数字出现的次数并返回对应的字典。

# 命名习惯,变量、方法名用下划线分隔;类名首字母大写,驼峰命名。
number_list = [1, 1, 0, 2, 3, 4, 5, 2, 1, 3, 5, 3, 5, 1, 2, 3, 5, 6, 87, 8, 95, 3, 4]


# 方法一:遍历元素,统计每个元素出现的次数
def count_list_element(array):
    result_return = {}
    for i in array:
        if result_return.__contains__(i):
            result_return[i] = result_return[i] + 1
        else:
            result_return[i] = 1
    return result_return


result = count_list_element(number_list)
print(result)
# {1: 4, 0: 1, 2: 3, 3: 5, 4: 2, 5: 4, 6: 1, 87: 1, 8: 1, 95: 1}


# 方法二:用 list 的计数函数,统计每个元素出现的次数
def count_list_element_2(array):
    result_return = {}
    for i in array:
        if not result_return.__contains__(i):
            result_return[i] = array.count(i)
    return result_return


result_2 = count_list_element_2(number_list)
print(result_2)
# {1: 4, 0: 1, 2: 3, 3: 5, 4: 2, 5: 4, 6: 1, 87: 1, 8: 1, 95: 1}

总结:

好了,Day4 打卡结束,学习了 python 中, list, dict, for 循环,if 判断的基本用法。

如果你也正在学习 Python ,欢迎和 bug 一起交流。

关注公众号 bug 玩编程,一起玩编程!