基于Python的產(chǎn)品經(jīng)理必備算法描述

1 評論 6239 瀏覽 52 收藏 12 分鐘

產(chǎn)品經(jīng)理需要懂點(diǎn)算法,作者用案例描述了幾種產(chǎn)品經(jīng)理的必備算法。

未來的世界,一定是信息科技主導(dǎo)的世界。未來的任何產(chǎn)品,都離不開信息科技的支撐。不論你是哪個(gè)領(lǐng)域的產(chǎn)品經(jīng)理,掌握一些基礎(chǔ)的算法,是非常有必要的。

而如今的一些比較優(yōu)秀的產(chǎn)品經(jīng)理,如蘋果產(chǎn)品創(chuàng)造人喬布斯,小米產(chǎn)品創(chuàng)造人雷軍,QQ產(chǎn)品創(chuàng)始人馬化騰,微信產(chǎn)品負(fù)責(zé)人張小龍,或多或少都有技術(shù)背景。當(dāng)然,并不是說產(chǎn)品經(jīng)理必須要有技術(shù)背景,因?yàn)橛行]有技術(shù)背景的產(chǎn)品經(jīng)理做的也不錯(cuò)。

本文想要表達(dá)的意思是,產(chǎn)品經(jīng)理掌握一些基礎(chǔ)的算法,可以為自己的產(chǎn)品設(shè)計(jì),產(chǎn)品邏輯,產(chǎn)品形態(tài)起到錦上添花的作用。因此,本文結(jié)合作者這些年的工作經(jīng)驗(yàn),梳理出幾個(gè)比較簡單基礎(chǔ)的算法。

這些基礎(chǔ)算法,的確可以在產(chǎn)品設(shè)計(jì)過程中發(fā)揮作用,可以使產(chǎn)品經(jīng)理在設(shè)計(jì)產(chǎn)品時(shí),產(chǎn)品邏輯更加清晰,可以更加全面掌握產(chǎn)品特性。

本文的程序算法,使用大家比較常見的Python語言進(jìn)行描述。

基礎(chǔ)算法

排序算法

排序算法有很多種,如冒泡排序、選擇排序、稀爾排序、歸并排序、堆排序、插入排序、快速排序等。如果是計(jì)算機(jī)專業(yè)這幾種算法應(yīng)該是相當(dāng)熟悉了,如果不是計(jì)算機(jī)專業(yè)的學(xué)生,其實(shí)全部掌握也沒必要。

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

為了便于大家理解,還是直接以實(shí)例的形式進(jìn)行講解;實(shí)例不是很復(fù)雜,主要是方便大家理解邏輯。

目前有一個(gè)數(shù)組,數(shù)組里是6個(gè)數(shù),我們需要將這個(gè)數(shù)組里的數(shù)按從小到大順序排列。

待排序的數(shù)組:arr=[4,6,3,9,1,3]

基本實(shí)現(xiàn)思路:

  1. 構(gòu)建一個(gè)臨時(shí)存放數(shù)據(jù)的參數(shù):temp。
  2. 從數(shù)組中第一個(gè)元素開始,依次對兩個(gè)相鄰的元素進(jìn)行比較,如果左側(cè)的數(shù)字大于右側(cè)的數(shù)字,則交換位置,交換位置,就需要用到temp。
  3. 運(yùn)算過程:arr[0]=4,arr[1]=6,4<6,滿足條件,則繼續(xù)
  4. arr[2]=3,而6>3,則需要將 arr[1]和arr[2]交換位置,令temp =aar[1],這時(shí)temp的值是6,arr[1]=arr[2],這時(shí)arr[1]的值為3,arr[2]=temp,arr[2]值為6。
  5. arr[2]=6,再與arr[3]=9作比較,滿足條件。
  6. arr[3]=9再與arr[4]=1作比較,9大于4,交換。則arr[3]=1,arr[4]=9。
  7. arr[4]=9再與arr[5]=3作比較,9大于3,交換。則arr[4]=3,arr[5]=9。
  8. 這時(shí)的數(shù)組順序變?yōu)閇4,3,6,1,3,9]。
  9. 繼續(xù)從數(shù)組的第一個(gè)元素開始,重復(fù)上述過程。

我們接下來看一下按照以上思路,數(shù)組中的元素是如何變化的:

  • 第一次:[4,3,6,1,3,9]
  • 第二次:[3,4,1,3,6,9]
  • 第三次:[3,1,3,4,6,9]
  • 第四次:[1,3,3,4,6,9]

我們?yōu)榱蓑?yàn)證我們的思路,程序代碼如下:

產(chǎn)品經(jīng)理必掌握的基礎(chǔ)算法

聚類算法

聚類算法在實(shí)際生產(chǎn)生活中用途比較廣泛,像數(shù)據(jù)統(tǒng)計(jì)分析,人工智能識別物體,信息分類歸集等。比較常見的聚類算法有:凝聚層次聚類、圖團(tuán)體檢測(Graph Community Detection)、K-Means(K均值)聚類、均值漂移聚類、基于密度的聚類方法(DBSCAN)、高斯混合模型(GMM)的最大期望(EM)聚類等。

當(dāng)然,以上這些算法專業(yè)性太強(qiáng)了。如果不從事專門領(lǐng)域的工作,產(chǎn)品經(jīng)理用到這些算法的可能性也很小。

本文今天講一個(gè)最為基礎(chǔ)的聚類算法,非常便于大家理解。

我們還是以數(shù)組為例,arr=[1,1,2,3,5,4,5,4,2,3,3,1,3,3,4,5],我們的所謂的聚類,就是要統(tǒng)計(jì)這個(gè)數(shù)組中每個(gè)數(shù)字出現(xiàn)的次數(shù),最終我們想到達(dá)到這樣的輸出結(jié)果:

  • 1出現(xiàn)3次
  • 2出現(xiàn)2次
  • 3出現(xiàn)5次
  • 4出現(xiàn)3次
  • 5出現(xiàn)3次

基本實(shí)現(xiàn)思路:

  1. 我們首先計(jì)算數(shù)字的長度,根據(jù)長度進(jìn)行遍歷。
  2. 構(gòu)建一個(gè)字典。當(dāng)并數(shù)組中的值作為字典的key,出現(xiàn)的次數(shù)作為value。
  3. 如果某個(gè)元素沒有在字典中,則記錄這個(gè)元素為key,value初始為1。
  4. 如果某個(gè)元素已經(jīng)存在在字典中,則更新這個(gè)元素的value+1。
  5. 遍歷完成,輸出字典值。

我們?yōu)榱蓑?yàn)證我們的思路,程序代碼如下:

產(chǎn)品經(jīng)理必掌握的基礎(chǔ)算法

由于我們是沒有排序的,所以輸出順序與之前預(yù)想的順序有些差異。如果需要排序,則可以先將原數(shù)組中的數(shù)據(jù)排序后,再進(jìn)行計(jì)算。

旋轉(zhuǎn)算法

旋轉(zhuǎn)的應(yīng)用大家應(yīng)該不陌生,最常見的就是手機(jī)或是電腦中查看照片的時(shí)候,照片的左轉(zhuǎn)右轉(zhuǎn)。圖片旋轉(zhuǎn)、視頻旋轉(zhuǎn)、文字內(nèi)容旋轉(zhuǎn),其實(shí)歸根到底都是數(shù)字矩陣的旋轉(zhuǎn)。

所有的這些表現(xiàn)形式,底層都是一個(gè)個(gè)二進(jìn)制的數(shù)字組成的。接下來,我們就是要在最基礎(chǔ)的邏輯展開分析。

我們還是以數(shù)組進(jìn)行講解。

我們有數(shù)組 arr=[[1,2,3],[4,5,6]],準(zhǔn)備向右旋轉(zhuǎn)90度。為了便于大家理解,我這樣表示:

原數(shù)組:

[1,2,3]

[4,5,6]

我們認(rèn)為,數(shù)組的寬度[1,2,3]=3,為x軸;數(shù)組的高度2,為y軸。

向右旋轉(zhuǎn)90度的后數(shù)組:

[3,6]

[2,5]

[1,4]

這時(shí),寬度x變?yōu)?,高度y變?yōu)?。

基本實(shí)現(xiàn)思路:

1)我們觀查上述數(shù)組發(fā)現(xiàn),向右旋轉(zhuǎn)90度后,組的維度由 2*3,變?yōu)榱?*2。

2)而數(shù)字位置變化如下:

  • 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)我們觀察上述數(shù)字變化,大家發(fā)現(xiàn)什么規(guī)律?每個(gè)數(shù)的數(shù)組x和y坐標(biāo)都左右進(jìn)行了對調(diào),變換后的y坐標(biāo)是原x坐標(biāo)的倒序。

4)進(jìn)行對原數(shù)組寬度x(設(shè)為i)和高度y(設(shè)為j)的遍歷,x遍歷i的增加,正是新數(shù)字的坐標(biāo)的減少。

即:新數(shù)組位置([x-1-i][j]=舊數(shù)組位置([j][i])

我們?yōu)榱蓑?yàn)證我們的思路,程序代碼如下:

產(chǎn)品經(jīng)理必掌握的基礎(chǔ)算法

為了便于大家理解,將原數(shù)組的值在遍歷的時(shí)候也進(jìn)行了輸出展示。

我們再思維擴(kuò)展一下,按我們這種思路,如果數(shù)組要向左旋轉(zhuǎn)90度呢?

原數(shù)組:

[1,2,3]

[4,5,6]

向左旋轉(zhuǎn)90度之后的數(shù)組:

[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]

大家又會(huì)發(fā)現(xiàn)什么規(guī)律呢?

是不是新數(shù)組y坐標(biāo)同原數(shù)組x坐標(biāo)增長趨勢一致,而新數(shù)組x的坐標(biāo),是原數(shù)組x坐標(biāo)的倒序?

也就是說,對原數(shù)組寬度x(設(shè)為i)和高度y(設(shè)為j)的遍歷,高度y遍歷j的增加,正是新數(shù)字的x坐標(biāo)的減少。即:新數(shù)組位置([i][y-1-j]=舊數(shù)組位置([j][i])

我們?yōu)榱蓑?yàn)證我們的思路,程序代碼如下:

產(chǎn)品經(jīng)理必掌握的基礎(chǔ)算法

經(jīng)過上述分析,大家是不是對旋轉(zhuǎn)算法有了一個(gè)清晰的認(rèn)識?

如果想旋轉(zhuǎn)180度呢?如果大家有興趣,可以按照上述思路進(jìn)行分析實(shí)踐。

總結(jié)

對于產(chǎn)品經(jīng)理而言,精通本領(lǐng)域的基礎(chǔ)知識,熟悉業(yè)務(wù)與產(chǎn)品模式是必須具備的技能。而于算法的了解和掌握,可以起到錦上添花的作用。

算法,是鍛煉產(chǎn)品經(jīng)理的邏輯思維相對比較好的訓(xùn)練工具。有興趣的同學(xué),可以多看一些這方向的書籍,也有很多比較有意思的算法,可以在工作之余練練手,調(diào)節(jié)一下心情。畢竟產(chǎn)口經(jīng)理的日常,不僅僅是寫個(gè)需求,更多的,還要看市場、看政策、看方向、看競品、懂運(yùn)營、懂業(yè)務(wù)、懂管理、懂營銷、會(huì)分析、會(huì)溝通、會(huì)寫PPT,需要做的工作內(nèi)容還很多。

而至于最終的產(chǎn)品能不能成功,還要看運(yùn)氣。個(gè)人的力量太渺小了,很多產(chǎn)品經(jīng)理的成功,其實(shí)是趕上了趨勢。處在大環(huán)境上升趨勢的時(shí)候,覺得自己的能力很強(qiáng),其實(shí)有時(shí)候也是一種誤判。結(jié)果大環(huán)境一旦發(fā)生變化,處在下降趨勢的時(shí)候,往往就會(huì)把前幾年靠運(yùn)氣積累的財(cái)富,這些年憑本事賠光了。

所以說,產(chǎn)品經(jīng)理太難了。

正因?yàn)槿绱耍a(chǎn)品經(jīng)理需要時(shí)刻保持清醒客觀的頭腦,而算法是一個(gè)相當(dāng)不錯(cuò)的朋友,當(dāng)你驕傲?xí)r讓你冷靜,當(dāng)你自卑時(shí)給你信心,當(dāng)你迷茫時(shí)給你方向。

感謝大家閱讀~

 

作者:王佳亮,中國計(jì)算機(jī)學(xué)會(huì)(CCF)會(huì)員。微信公眾號:佳佳原創(chuàng)

本文由 @佳佳原創(chuàng) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unspalsh, 基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 樓主是什么類型的產(chǎn)品經(jīng)理呢?數(shù)據(jù)的嗎 ,很想清楚數(shù)據(jù)產(chǎn)品經(jīng)理日常工作要打代碼嗎

    來自廣東 回復(fù)