基于Python的產品經理必備算法描述

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

產品經理需要懂點算法,作者用案例描述了幾種產品經理的必備算法。

未來的世界,一定是信息科技主導的世界。未來的任何產品,都離不開信息科技的支撐。不論你是哪個領域的產品經理,掌握一些基礎的算法,是非常有必要的。

而如今的一些比較優秀的產品經理,如蘋果產品創造人喬布斯,小米產品創造人雷軍,QQ產品創始人馬化騰,微信產品負責人張小龍,或多或少都有技術背景。當然,并不是說產品經理必須要有技術背景,因為有些沒有技術背景的產品經理做的也不錯。

本文想要表達的意思是,產品經理掌握一些基礎的算法,可以為自己的產品設計,產品邏輯,產品形態起到錦上添花的作用。因此,本文結合作者這些年的工作經驗,梳理出幾個比較簡單基礎的算法。

這些基礎算法,的確可以在產品設計過程中發揮作用,可以使產品經理在設計產品時,產品邏輯更加清晰,可以更加全面掌握產品特性。

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

基礎算法

排序算法

排序算法有很多種,如冒泡排序、選擇排序、稀爾排序、歸并排序、堆排序、插入排序、快速排序等。如果是計算機專業這幾種算法應該是相當熟悉了,如果不是計算機專業的學生,其實全部掌握也沒必要。

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

為了便于大家理解,還是直接以實例的形式進行講解;實例不是很復雜,主要是方便大家理解邏輯。

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

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

基本實現思路:

  1. 構建一個臨時存放數據的參數:temp。
  2. 從數組中第一個元素開始,依次對兩個相鄰的元素進行比較,如果左側的數字大于右側的數字,則交換位置,交換位置,就需要用到temp。
  3. 運算過程:arr[0]=4,arr[1]=6,4<6,滿足條件,則繼續
  4. 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。
  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. 這時的數組順序變為[4,3,6,1,3,9]。
  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]

我們為了驗證我們的思路,程序代碼如下:

產品經理必掌握的基礎算法

聚類算法

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

當然,以上這些算法專業性太強了。如果不從事專門領域的工作,產品經理用到這些算法的可能性也很小。

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

我們還是以數組為例,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次

基本實現思路:

  1. 我們首先計算數字的長度,根據長度進行遍歷。
  2. 構建一個字典。當并數組中的值作為字典的key,出現的次數作為value。
  3. 如果某個元素沒有在字典中,則記錄這個元素為key,value初始為1。
  4. 如果某個元素已經存在在字典中,則更新這個元素的value+1。
  5. 遍歷完成,輸出字典值。

我們為了驗證我們的思路,程序代碼如下:

產品經理必掌握的基礎算法

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

旋轉算法

旋轉的應用大家應該不陌生,最常見的就是手機或是電腦中查看照片的時候,照片的左轉右轉。圖片旋轉、視頻旋轉、文字內容旋轉,其實歸根到底都是數字矩陣的旋轉。

所有的這些表現形式,底層都是一個個二進制的數字組成的。接下來,我們就是要在最基礎的邏輯展開分析。

我們還是以數組進行講解。

我們有數組 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協議

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

    來自廣東 回復