python資料分析與演算法之一 基本概念

2022-06-23 05:57:13 字數 2461 閱讀 3302

如何形象化的理解演算法?

意義

什麼是演算法分析?

引例:a+b+c = 1000 a^2 + b^2 = c^2 (a,b,c均為自然數),求出a,b,c可能的組合?

#

法一:for a in range(0,1001):

for b in range(0,1001):

for c in range(0,1001):

if a+b+c == 1000 and a**2+b**2 == c**2:

print

(a,b,c)

#法二:

for a in range(0,1001):

for b in range(0,1001):

c = 1000-a-b

if a+b+c == 1000 and a**2+b**2 == c**2:

print(a,b,c)

view code

如何評判程式的優劣?

時間複雜度

例一: 計算下列演算法的時間複雜度

def

sumofn(n):

thesum =0

for i in range(1,n+1):

thesum +=i

return

thesum

print(sumofn(10))

#1+n+1 = n+2 ==> o(n)

view code

例二:計算下列演算法的時間複雜度

a=5b=6c=10

for i in

range(n):

for j in

range(n):

x = i *i

y = j *j

z = i *j

for k in

range(n):

w = a*k + 45v = b*b

d = 33​

#3 + n*n*3 + 2n + 1 ==> 3n**2+2n ==> 3n**2 ==> n**2 ==>o(n**2)

view code

例:例項化乙個空列表,然後將0-n範圍的資料新增到列表中。(四種方式)

from timeit import

timer

deftext01():

alist =

for i in range(1000):

return

alist

​def

text02():

alist =

for i in range(1000):

alist +=[i]

return

alist

​def

text03():

alist = [ i for i in range(1000)]

return

alist

​def

text04():

alist = list(range(1000))

return

alist​if

__name__ == '

__main__':

t1 = timer('

text01()

',setup="

from __main__ import text01")

t_1 = t1.timeit(1000)

print

(t_1)

t2 = timer('

text02()

',setup="

from __main__ import text02")

t_2 = t2.timeit(1000)

print

(t_2)

t3 = timer('

text03()

',setup="

from __main__ import text03")

t_3 = t3.timeit(1000)

print

(t_3)

t4 = timer('

text04()

',setup="

from __main__ import text04")

t_4 = t4.timeit(1000)

print

(t_4)

#0.102241317647497

#0.09949069216443718

#0.0516077816489684

#0.019912033670678397

view code

python資料分析與展示 一

本文是中國大學mooc中北京理工大學的python系列專題講座的python資料分析與展示的筆記 使用 matplotlib.pyplot是繪製各類視覺化的圖形命令子庫,相當於快捷方式 引入庫檔案 import matplotlib.pyplot as plt示例 import matplotlib...

Python資料分析與展示 一

摘要 有損的提取資料特徵 run 執行py程式 time statement 給出 執行時間 timeit statement 多次執行 給出平均時間 高維資料 字典型別或者資料表示格式 dict 國際公認資料表示格式 json xml yaml import numpy as np defnpsu...

Python資料分析與處理 一

目錄 前言 為了幫助廣大考生和家長了解高考歷年的錄取情況,很多 都彙總了各省市的錄取控制分數線,為廣大考生填報志願提供參考。因受多種因素影響,每年的分數線或多或少會有一些變動。採集北程式設計客棧京2006 2019年的資訊。使用python的pandas庫完成以下資料分析。包含三部分內容 從 爬取,...