前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重磅: 华为免费培养8000名Python开发者与你有关

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

作者头像
小码匠
发布2022-06-16 13:54:07
1900
发布2022-06-16 13:54:07
举报
文章被收录于专栏:小码匠和老码农

阅读本文能学到什么

  • 算法不断精进过程
  • 知识如何融会贯通
    • 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/%E4%B8%AD%E4%BD%8D%E5%80%BC/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/%E4%B8%AD%E4%BD%8D%E5%80%BC/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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 阅读本文能学到什么
  • 华为8000名Python开发者
  • 中位数
  • 融会贯通
  • 向大牛学习
  • 留作业
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档