原标题:基于Python的产品经理必备算法描述

产品经理需要懂点算法,作者用案例描述了几种产品经理的必备算法。

未来的世界,一定是信息科技主导的世界。未来的任何产品,都离不开信息科技的支撑。不论你是哪个领域的产品经理,掌握一些基础的算法,是非常有必要的。

而如今的一些比较优秀的产品经理,如苹果产品创造人乔布斯,小米产品创造人雷军,QQ产品创始人马化腾,微信产品负责人张小龙,或多或少都有技术背景。当然,并不是说产品经理必须要有技术背景,因为有些没有技术背景的产品经理做的也不错。

本文想要表达的意思是,产品经理掌握一些基础的算法,可以为自己的产品设计,产品逻辑,产品形态起到锦上添花的作用。因此,本文结合作者这些年的工作经验,梳理出几个比较简单基础的算法。

这些基础算法,的确可以在产品设计过程中发挥作用,可以使产品经理在设计产品时,产品逻辑更加清晰,可以更加全面掌握产品特性。

本文的程序算法,使用大家比较常见的Python语言进行描述。

基础算法 排序算法

排序算法有很多种,如冒泡排序、选择排序、稀尔排序、归并排序、堆排序、插入排序、快速排序等。如果是计算机专业这几种算法应该是相当熟悉了,如果不是计算机专业的学生,其实全部掌握也没必要。

用什么排序不重要,主要是知道其中的逻辑。

为了便于大家理解,还是直接以实例的形式进行讲解;实例不是很复杂,主要是方便大家理解逻辑。

目前有一个数组,数组里是6个数,我们需要将这个数组里的数按从小到大顺序排列。

待排序的数组:arr=[4,6,3,9,1,3]

基本实现思路:

构建一个临时存放数据的参数:temp。

从数组中第一个元素开始,依次对两个相邻的元素进行比较,如果左侧的数字大于右侧的数字,则交换位置,交换位置,就需要用到temp。

运算过程:arr[0]=4,arr[1]=6,4<6,满足条件,则继续

arr[2]=3,而6>3,则需要将 arr[1]和arr[2]交换位置,令temp =aar[1],这时temp的值是6,arr[1]=arr[2],这时arr[1]的值为3,arr[2]=temp,arr[2]值为6。

arr[2]=6,再与arr[3]=9作比较,满足条件。

arr[3]=9再与arr[4]=1作比较,9大于4,交换。则arr[3]=1,arr[4]=9。

arr[4]=9再与arr[5]=3作比较,9大于3,交换。则arr[4]=3,arr[5]=9。

这时的数组顺序变为[4,3,6,1,3,9]。

继续从数组的第一个元素开始,重复上述过程。

我们接下来看一下按照以上思路,数组中的元素是如何变化的:

第一次:[4,3,6,1,3,9]

第二次:[3,4,1,3,6,9]

第三次:[3,1,3,4,6,9]

第四次:[1,3,3,4,6,9]

我们为了验证我们的思路,程序代码如下:

聚类算法

当然,以上这些算法专业性太强了。如果不从事专门领域的工作,产品经理用到这些算法的可能性也很小。

本文今天讲一个最为基础的聚类算法,非常便于大家理解。

我们还是以数组为例,arr=[1,1,2,3,5,4,5,4,2,3,3,1,3,3,4,5],我们的所谓的聚类,就是要统计这个数组中每个数字出现的次数,最终我们想到达到这样的输出结果:

1出现3次

2出现2次

3出现5次

4出现3次

5出现3次

基本实现思路:

我们首先计算数字的长度,根据长度进行遍历。

构建一个字典。当并数组中的值作为字典的key,出现的次数作为value。

如果某个元素没有在字典中,则记录这个元素为key,value初始为1。

如果某个元素已经存在在字典中,则更新这个元素的value+1。

遍历完成,输出字典值。

我们为了验证我们的思路,程序代码如下:

由于我们是没有排序的,所以输出顺序与之前预想的顺序有些差异。如果需要排序,则可以先将原数组中的数据排序后,再进行计算。

旋转算法

旋转的应用大家应该不陌生,最常见的就是手机或是电脑中查看照片的时候,照片的左转右转。图片旋转、视频旋转、文字内容旋转,其实归根到底都是数字矩阵的旋转。

所有的这些表现形式,底层都是一个个二进制的数字组成的。接下来,我们就是要在最基础的逻辑展开分析。

我们还是以数组进行讲解。

我们有数组 arr=[[1,2,3],[4,5,6]],准备向右旋转90度。为了便于大家理解,我这样表示:

原数组:

[1,2,3]

[4,5,6]

我们认为,数组的宽度[1,2,3]=3,为x轴;数组的高度2,为y轴。

向右旋转90度的后数组:

[3,6]

[2,5]

[1,4]

这时,宽度x变为2,高度y变为3。

基本实现思路:

1)我们观查上述数组发现,向右旋转90度后,组的维度由 2*3,变为了3*2。

2)而数字位置变化如下:

1:[0][0]->[2][0]

2:[0][1]->[1][0]

3:[0][2]->[0][0]

4:[1][0]->[2][1]

5:[1][1]->[1][1]

6:[1][2]->[0][1]

3)我们观察上述数字变化,大家发现什么规律?每个数的数组x和y坐标都左右进行了对调,变换后的y坐标是原x坐标的倒序。

4)进行对原数组宽度x(设为i)和高度y(设为j)的遍历,x遍历i的增加,正是新数字的坐标的减少。

即:新数组位置([x-1-i][j]=旧数组位置([j][i])

我们为了验证我们的思路,程序代码如下:

为了便于大家理解,将原数组的值在遍历的时候也进行了输出展示。

我们再思维扩展一下,按我们这种思路,如果数组要向左旋转90度呢?

原数组:

[1,2,3]

[4,5,6]

向左旋转90度之后的数组:

[4,1]

[5,2]

[6,3]

即:

1:[0][0]->[0][1]

2:[0][1]->[1][1]

3:[0][2]->[2][1]

4:[1][0]->[0][0]

5:[1][1]->[1][0]

6:[1][2]->[2][0]

大家又会发现什么规律呢?

是不是新数组y坐标同原数组x坐标增长趋势一致,而新数组x的坐标,是原数组x坐标的倒序?

也就是说,对原数组宽度x(设为i)和高度y(设为j)的遍历,高度y遍历j的增加,正是新数字的x坐标的减少。即:新数组位置([i][y-1-j]=旧数组位置([j][i])

我们为了验证我们的思路,程序代码如下:

经过上述分析,大家是不是对旋转算法有了一个清晰的认识?

如果想旋转180度呢?如果大家有兴趣,可以按照上述思路进行分析实践。

总结

对于产品经理而言,精通本领域的基础知识,熟悉业务与产品模式是必须具备的技能。而于算法的了解和掌握,可以起到锦上添花的作用。

算法,是锻炼产品经理的逻辑思维相对比较好的训练工具。有兴趣的同学,可以多看一些这方向的书籍,也有很多比较有意思的算法,可以在工作之余练练手,调节一下心情。毕竟产口经理的日常,不仅仅是写个需求,更多的,还要看市场、看政策、看方向、看竞品、懂运营、懂业务、懂管理、懂营销、会分析、会沟通、会写PPT,需要做的工作内容还很多。

而至于最终的产品能不能成功,还要看运气。个人的力量太渺小了,很多产品经理的成功,其实是赶上了趋势。处在大环境上升趋势的时候,觉得自己的能力很强,其实有时候也是一种误判。结果大环境一旦发生变化,处在下降趋势的时候,往往就会把前几年靠运气积累的财富,这些年凭本事赔光了。

所以说,产品经理太难了。

正因为如此,产品经理需要时刻保持清醒客观的头脑,而算法是一个相当不错的朋友,当你骄傲时让你冷静,当你自卑时给你信心,当你迷茫时给你方向。

感谢大家阅读~

作者:王佳亮,中国计算机学会(CCF)会员。微信公众号:佳佳原创

本文由 @佳佳原创 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自Unspalsh, 基于CC0协议返回搜狐,查看更多

责任编辑:

python算法的三种描述是什么_基于Python的产品经理必备算法描述相关推荐

  1. python对abaqus本构二次开发_基于Python的Abaqus二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

  2. python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例

    基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...

  3. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究

    基于 Python 构造方法与析构方法的研究 林观德 [期刊名称] < <现代职业教育> > [年 ( 卷 ), 期] 2019(000)018 [摘要] Python 语言是 ...

  4. python开发跟淘宝有关联微_基于Python的Apriori和FP-growth关联分析算法分析淘宝用户购物关联度...

    关联分析用于发现用户购买不同的商品之间存在关联和相关联系,比如A商品和B商品存在很强的相关性,常用于实体商店或在线电商的推荐系统,例如某一客户购买A商品,那么他很有可能会购买B商品,通过大量销售数据找 ...

  5. python怎么将json文件转为xls文件_基于python实现把json数据转换成Excel表格

    json数据: [{"authenticate":-99,"last_ip":"156.2.98.429","last_time& ...

  6. K-means聚类算法的三种改进(K-means++,ISODATA,Kernel K-means)介绍与对比

    原文:http://www.cnblogs.com/yixuan-xu/p/6272208.html K-means聚类算法的三种改进(K-means++,ISODATA,Kernel K-means ...

  7. c语言勾股定理程序流程图,方法总结1.表达算法的方法有自然语言.流程图和基本算法语句三种.先有自然语言.再画流程图.最后才能写出基本算法语句.即程序,——青夏教育精英家教网——...

    考点一:自然语言表示的算法 [内容解读]通过对解决具体问题过程与步骤的分析,体会算法的思想,了解算法的含义:对于某一问题往往可以设计出多种算法,通过选用步骤最少的.结构最好的算法. [命题规律]以选择 ...

  8. js实现阶乘算法的三种方法

    js实现阶乘算法的三种方法 // 非递归写法 function f(n) {if (0 === n) {return 1;}let res = 1;for (let i = 1; i <= n; ...

  9. Python二叉树的三种深度优先遍历

    Python二叉树的三种深度优先遍历 一.广度优先遍历和深度优先遍历 对二叉树进行遍历(traversal)是指依次对树中每个节点进行访问,在遍历的过程中实现需要的业务. 对树的遍历方式有广度优先遍历 ...

最新文章

  1. 删除Openstack所有组件
  2. 全国计算机等级考试题库二级C操作题100套(第48套)
  3. 前端学习(2491):refused to apply style from ‘‘ because its MIME type (‘text/html‘) is not a supported sty
  4. 8.5-Day1T1--Asm.Def 谈笑风生
  5. keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...
  6. oracle控制文件还原,Oracle的控制文件的恢复与重建
  7. 从技术上解读大数据的应用现状和开源未来! | 技术头条
  8. 知乎高赞:当update修改数据与原数据相同时会再次执行吗?
  9. Latex 常用代码
  10. Matlab 获取主板、硬盘、CPU、BIOS和网卡序列号
  11. 空间变换与计算_02_3x3矩阵
  12. 《数字图像处理》实验三
  13. 介绍一个被称为十一边形战士的强大模型
  14. html图片自动跳转,点击图片跳转链接(html点击图片跳转链接)
  15. 【Proteus仿真】基于STC15单片机简易数码管定时器时钟
  16. 数学实验基于matlab软件,数学实验:基于MATLAB软件
  17. 开始做公众号的一些方法技巧总结
  18. php 如何创建一个对象,创建一个PHP对象 - BENNEE的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第三篇)故障保护及问题诊断
  20. Python Selenium.WebDriver 最强详解页面加载策略

热门文章

  1. 網頁設計(繁體工具軟件)
  2. Turtlebot移动机器人gazebo仿真及自动导航(详细级)
  3. 国标5孔离线语音插座
  4. 致享1.5E 自魅 自己保养记录
  5. ERR_PNPM_META_FETCH_FAIL GET https://registry.npmjs.org/@webpack-cli%2Fserve: request to https://re
  6. 各电商售后之最强免单攻略
  7. 招募 | “壹脑云科研圈“招募新成员啦
  8. 网络营销风生水起,传统营销又将走向何方?
  9. Java遍历Json中的key和value
  10. k8s——pod控制器