热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python相关的产品经理_基于Python的产品经理必备算法描述

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

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

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

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

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

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

基础算法 排序算法

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

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

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

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

待排序的数组:arr=【4,6,3,9,1,3】

基本实现思路:

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

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

运算过程&#xff1a;arr【0】&#61;4&#xff0c;arr【1】&#61;6&#xff0c;4<6&#xff0c;满足条件&#xff0c;则继续

arr【2】&#61;3&#xff0c;而6>3&#xff0c;则需要将 arr【1】和arr【2】交换位置&#xff0c;令temp &#61;aar【1】这时temp的值是6&#xff0c;arr【1】&#61;arr【2】这时arr【1】的值为3&#xff0c;arr【2】&#61;temp&#xff0c;arr【2】值为6。

arr【2】&#61;6&#xff0c;再与arr【3】&#61;9作比较&#xff0c;满足条件。

arr【3】&#61;9再与arr【4】&#61;1作比较&#xff0c;9大于4&#xff0c;交换。则arr【3】&#61;1&#xff0c;arr【4】&#61;9。

arr【4】&#61;9再与arr【5】&#61;3作比较&#xff0c;9大于3&#xff0c;交换。则arr【4】&#61;3&#xff0c;arr【5】&#61;9。

这时的数组顺序变为【4&#xff0c;3&#xff0c;6&#xff0c;1&#xff0c;3&#xff0c;9】

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

我们接下来看一下按照以上思路&#xff0c;数组中的元素是如何变化的&#xff1a;

第一次&#xff1a;4&#xff0c;3&#xff0c;6&#xff0c;1&#xff0c;3&#xff0c;9

第二次&#xff1a;3&#xff0c;4&#xff0c;1&#xff0c;3&#xff0c;6&#xff0c;9

第三次&#xff1a;3&#xff0c;1&#xff0c;3&#xff0c;4&#xff0c;6&#xff0c;9

第四次&#xff1a;1&#xff0c;3&#xff0c;3&#xff0c;4&#xff0c;6&#xff0c;9

我们为了验证我们的思路&#xff0c;程序代码如下&#xff1a;

聚类算法

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

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

我们还是以数组为例&#xff0c;arr&#61;【1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;4&#xff0c;5&#xff0c;4&#xff0c;2&#xff0c;3&#xff0c;3&#xff0c;1&#xff0c;3&#xff0c;3&#xff0c;4&#xff0c;5】我们的所谓的聚类&#xff0c;就是要统计这个数组中每个数字出现的次数&#xff0c;最终我们想到达到这样的输出结果&#xff1a;

1出现3次

2出现2次

3出现5次

4出现3次

5出现3次

基本实现思路&#xff1a;

我们首先计算数字的长度&#xff0c;根据长度进行遍历。

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

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

遍历完成&#xff0c;输出字典值。

我们为了验证我们的思路&#xff0c;程序代码如下&#xff1a;

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

旋转算法

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

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

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

我们有数组 arr&#61;【1&#xff0c;2&#xff0c;3】【4&#xff0c;5&#xff0c;6】&#xff0c;准备向右旋转90度。为了便于大家理解&#xff0c;我这样表示&#xff1a;

原数组&#xff1a;

1&#xff0c;2&#xff0c;3

4&#xff0c;5&#xff0c;6

我们认为&#xff0c;数组的宽度【1&#xff0c;2&#xff0c;3】&#61;3&#xff0c;为x轴&#xff1b;数组的高度2&#xff0c;为y轴。

向右旋转90度的后数组&#xff1a;

3&#xff0c;6

2&#xff0c;5

1&#xff0c;4

这时&#xff0c;宽度x变为2&#xff0c;高度y变为3。

基本实现思路&#xff1a;

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

2而数字位置变化如下&#xff1a;

1&#xff1a;00->20

2&#xff1a;01->10

3&#xff1a;02->00

4&#xff1a;10->21

5&#xff1a;11->11

6&#xff1a;12->01

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

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

即&#xff1a;新数组位置(x-1-i】j】&#61;旧数组位置(j】i】

我们为了验证我们的思路&#xff0c;程序代码如下&#xff1a;

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

我们再思维扩展一下&#xff0c;按我们这种思路&#xff0c;如果数组要向左旋转90度呢&#xff1f;

原数组&#xff1a;

1&#xff0c;2&#xff0c;3

4&#xff0c;5&#xff0c;6

向左旋转90度之后的数组&#xff1a;

4&#xff0c;1

5&#xff0c;2

6&#xff0c;3

即&#xff1a;

1&#xff1a;00->01

2&#xff1a;01->11

3&#xff1a;02->21

4&#xff1a;10->00

5&#xff1a;11->10

6&#xff1a;12->20

大家又会发现什么规律呢&#xff1f;

是不是新数组y坐标同原数组x坐标增长趋势一致&#xff0c;而新数组x的坐标&#xff0c;是原数组x坐标的倒序&#xff1f;

也就是说&#xff0c;对原数组宽度x(设为i)和高度y(设为j)的遍历&#xff0c;高度y遍历j的增加&#xff0c;正是新数字的x坐标的减少。即&#xff1a;新数组位置(i】y-1-j】&#61;旧数组位置(j】i】

我们为了验证我们的思路&#xff0c;程序代码如下&#xff1a;

经过上述分析&#xff0c;大家是不是对旋转算法有了一个清晰的认识&#xff1f;

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

总结

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

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

所以说&#xff0c;产品经理太难了。

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

本文相关词条概念解析&#xff1a;

数组

数组有上界和下界&#xff0c;数组的元素在上下界内是连续的。因为VisualBasic对每一个索引值都分配空间&#xff0c;所以不要不切实际声明一个太大的数组。

算法

算法是指解题方案的准确而完整的描述&#xff0c;是一系列解决问题的清晰指令&#xff0c;算法代表着用系统的方法描述解决问题的策略机制&#xff1b;它是求解问题类的、机械的、统一的方法&#xff0c;常用于计算、数据处理(英语&#xff1a;Dataprocessing)和自动推理。可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列&#xff0c;并且这样的步骤和序列可以解决一类问题。算法中的指令描述的是一个计算&#xff0c;当其运行时能从一个初始状态和(可能为空的)初始输入开始&#xff0c;经过一系列有限而清晰定义的状态&#xff0c;最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法&#xff0c;包含了一些随机输入。



推荐阅读
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了使用Python根据字典中的值进行排序的方法,并给出了实验结果。通过将字典转化为记录项,可以按照字典中的值进行排序操作。实验结果显示,按照值进行排序后的记录项为[('b', 2), ('a', 3)]。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • 开发笔记:python协程的理解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python协程的理解相关的知识,希望对你有一定的参考价值。一、介绍什么是并发?并发的本质就是 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 我们需要用到一个python强大的库:python-dox直接pipinstallpython-docx在项目中加个赤壁赋.docx的空文件附上完整的python代码fromdoc ... [详细]
  • 项目背景:在玩游戏《坎巴拉太空计划》过程中发现火箭升空的过程比较有意思,想通过程序实现表述其具体升空的过程功能:1.输入变量, ... [详细]
  • 开发笔记:超全的《 Django 入门教程 》上线了,居然还免费!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了超全的《Django入门教程》上线了,居然还免费!相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
huanhuan199538
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有