重磅: 华为免费培养8000名Python开发者与你有关

2022-06-16 13:54:07 浏览数 (1)

阅读本文能学到什么

  • 算法不断精进过程
  • 知识如何融会贯通
    • Python
    • NumPy
  • 如何对标学习

华为8000名Python开发者

老码农:小码匠,华为要培养8000名开发者,学习免费!实践免费!辅导免费!机会难得啊!

小码匠:你提到的华为,是刚回国的女英雄孟晚舟所属公司华为吗?

老码农:是啊。

小码匠:华为要培养8000名Python开发这事,你那么激动干嘛?和你没啥关系的,因为你有点老。

老码农:,和你有关系啊。

小码匠:

老码农:

  • 说明我给你选的方向没错啊
  • 说明你很辛福啊,有这么一个有前瞻性的老爸啊

小码匠:说半天,就是夸你自己很有眼光呗。

老码农:这个活动你感兴趣不?我给你报个名吧?和高手们一起切磋,进步快!列夫托尔斯泰说的。

与人交谈一次,往往比多年闭门劳作更能启发心智。

中位数

小码匠:话说今天做什么算法?

老码农:今天这个简单,获取一个数值型列表中位于中间的值,即中位数

百科中是这样定义的:中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。

小码匠:是先排序,取中间的值吗?

老码农:理解能力不错,做码匠确实是你最佳选择。

小码匠:那要偶数个数怎么办啊?

老码农:取中间2个值的平均数就可以。

小码匠:嗯,明白了。

老码农:需求问的很清楚,喜欢你这样的学生,值得赞扬

小码匠,噼里啪啦,虐完键盘,代码呈现如下:

代码语言:javascript复制
def median(input_list: list) -> float:
    input_list.sort()
    if len(input_list) % 2 == 1:
        return input_list[len(input_list) // 2]
    else:
        return (input_list[len(input_list) // 2]   input_list[len(input_list) // 2 - 1]) / 2

if __name__ == "__main__":
    print(median([60, 10, 20, 30, 40, 50]))

老码农:快手小码匠。不过,你这个,看着有点闹心代码有些啰嗦啊。推荐你看一本书《代码整洁之道》。

小码匠:我不想看,你对新手要求太高了吧,我才学不足2个月啊。

老码农:必须要对自己的小孩负责,不是谁都有你这个待遇的。

小码匠:你是不是说取长度那块太啰嗦了啊。

老码农:是滴。

小码匠飞动手指,又是一阵噼里啪啦。代码呈现如下:

代码语言:javascript复制
def median(input_list: list) -> float:
    input_list.sort()
    num = len(input_list)
    if num % 2 == 1:
        return input_list[num // 2]
    else:
        return (input_list[num // 2]   input_list[num // 2 - 1]) / 2

if __name__ == "__main__":
    print(median([60, 10, 20, 30, 40, 50]))

老码农:看着比之前舒服多了。再考你一个知识点,用列表的切片怎么搞?

小码匠:这个简单。又是一阵噼里啪啦。代码呈现如下:

代码语言:javascript复制
def median(input_list: list) -> float:
    input_list.sort()
    num = len(input_list)
    if num % 2 == 1:
        return input_list[num // 2]
    else:
        return sum(input_list[num // 2 - 1: num // 2   1]) / 2

if __name__ == "__main__":
    print(median([60, 10, 20, 30, 40, 50, 70, 80, 90]))

老码农:我想敲你的头。

小码匠:,我又错了吗?

老码农:如果我输入,会咋样?

代码语言:javascript复制
    print(mean([]))

小码匠:不好意思,忘记了。

又是一阵噼里啪啦。代码呈现如下:

代码语言:javascript复制
def median(input_list: list) -> float:
    """
    中位数
    href: https://baike.baidu.com/item/中位值/9501969?fr=aladdin
    input_list: list[int] 数值型数据列表
    returns: float: 中位值
    """
    if not input_list:
        return 0

    input_list.sort()
    num = len(input_list)
    if num % 2 == 1:
        return input_list[num // 2]
    else:
        return sum(input_list[num // 2 - 1: num // 2   1]) / 2

if __name__ == "__main__":
    # print(mean([]))
    print(median([60, 10, 20, 30, 40, 50, 70, 80, 90]))

老码农:不好,不好,不够完美我来吧!老码农直接操刀上,又是几声噼里啪啦。

代码语言:javascript复制
def median(input_list: list) -> float:
    """
    中位数
    href: https://baike.baidu.com/item/中位值/9501969?fr=aladdin
    input_list: list[int] 数值型数据列表
    returns: float: 中位值
    """
    if not input_list:
        raise ValueError("你输入的是个空列表")

    input_list.sort()
    num = len(input_list)
    if num % 2 == 1:
        return input_list[num // 2]
    else:
        return sum(input_list[num // 2 - 1: num // 2   1]) / 2

if __name__ == "__main__":
    print(mean([]))
    print(median([60, 10, 20, 30, 40, 50, 70, 80, 90]))

老码农:刚我加的这句能看懂吧。

小码匠:能,在上一个算法题,你为啥不告诉我。

老码农:因为我是一个优秀的老码农啊。。。

小码匠:吹牛,对我还有保留,小心眼。

融会贯通

老码农:再考你个问题:刚学完numpy,用numpy搞搞呗,一行代码就能搞定的。

小码匠:我去查查,刚看完资料,还没怎么敲代码呢,我是金鱼的记忆,只有七秒,需要再加强。小码匠噼里啪啦,翻起了资料。又是一阵噼里啪啦。代码呈现如下:

代码语言:javascript复制
import numpy as np
def median2(input_list: list) -> float:
    return np.median(input_list)

老码农:不错,不错,有点像我,学习能力还是挺强的。

小码匠:时刻不忘夸你自己,羞不羞啊。

向大牛学习

老码农:再给你看个俄罗斯大牛写的算法代码,一起学习下。

代码语言:javascript复制
def median(nums: list) -> Union[int, float]:
    """
    Find median of a list of numbers.
    Wiki: https://en.wikipedia.org/wiki/Median

    >>> median([0])
    0
    >>> median([4, 1, 3, 2])
    2.5
    >>> median([2, 70, 6, 50, 20, 8, 4])
    8

    Args:
        nums: List of nums

    Returns:
        Median.
    """
    sorted_list = sorted(nums)
    length = len(sorted_list)
    mid_index = length >> 1
    return (
        (sorted_list[mid_index]   sorted_list[mid_index - 1]) / 2
        if length % 2 == 0
        else sorted_list[mid_index]
    )

留作业

老码农:再给你提2个小问题,开动你的小脑袋瓜,思考下呗。

  • 列表sort和sorted的区别?
  • 其实你写得很不错了,但你肯定更有追求,读懂他的代码,找找小差距?

小码匠:变相说我不如他呗,哼,等着瞧吧。

老码农:看明白大牛的代码,告诉我你思考结果啊。

一枚聪明的小码匠,加油啊。。。

END

0 人点赞