程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python知識:用結構簡化復循環

編輯:Python

一、說明

        在傳統的計算機語言中,有些問題解決是“硬”算,而在python中,有許多問題中,數據結構能起很大作用,這些結構的合理應用,能夠節約時間。在python中,這些現象很常見。本文中,我們基本上將使用兩種不同的數據結構來簡化一個問題。

二、問題描述

        在一個序列中,我們將前列中某兩個值的和,與後續某個元素值相等,將所有這種元素打印出來。比如:

輸入序列: a=[1,2,3,4,5,6]

輸出元素對: (1 2)         (1 3)         (1 4)         (1 5)         (2 3)        ( 2 4)

三、解法一

最基本的方法將包括三環。導致時間復雜度為 O(n^3)。

def suminarray(a):
k = 0
lis = []
n = len(a)
for i in range(n - 1):
for j in range(i + 1, n):
for l in range(n):
if (a[i] + a[j] == a[l]):
lis.append((a[i], a[j]))
k += 1
if (k > 0):
return lis
else:
return ("NOT EXIST")
ss = [1,2,3,4,5,6,7]
tt = suminarray(ss)

四、解法二

代替第三個循環,我們可以使用數據結構來存儲數組值,以便在搜索時輕松檢索它們。
我們將首先使用一個列表(原始數組本身)

def suminarray(a):
k=0
lis=[]
n=len(a)
for i in range(n-1):
for j in range(i+1,n):
if (a[i]+a[j]) in a:
lis.append([a[i],a[j]])
k+=1
if(k>0):
return lis
else:
return ("NOT EXIST")

五、解法三:用字典簡化案例

我們現在將使用搜索,它在搜索元素時被認為是最有效的數據結構。

def suminarray(a):
k=0
lis=[]
n=len(a)
s={i : 1 for i in a}
print(s)
for i in range(n-1):
for j in range(i+1,n):
if s.get((a[i]+a[j]),0)==1:
lis.append([a[i],a[j]])
k+=1
if(k>0):
return lis
else:
return ("NOT EXIST")
ss = [1,2,3,4,5,6,7]
tt = suminarray(ss)

這篇文章就到此為止。更多的關於字典的用途如下:

六、字典內置函數&方法

Python字典包含了以下內置函數:

序號函數及描述1cmp(dict1, dict2)
比較兩個字典元素。2len(dict)
計算字典元素個數,即鍵的總數。3str(dict)
輸出字典可打印的字符串表示。4type(variable)
返回輸入的變量類型,如果變量是字典就返回字典類型。

Python字典包含了以下內置方法:

序號函數及描述1dict.clear()
刪除字典內所有元素2dict.copy()
返回一個字典的淺復制3dict.fromkeys(seq[, val])
創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值4dict.get(key, default=None)
返回指定鍵的值,如果值不在字典中返回default值5dict.has_key(key)
如果鍵在字典dict裡返回true,否則返回false6dict.items()
以列表返回可遍歷的(鍵, 值) 元組數組7dict.keys()
以列表返回一個字典所有的鍵8dict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default9dict.update(dict2)
把字典dict2的鍵/值對更新到dict裡10dict.values()
以列表返回字典中的所有值11pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。12popitem()
返回並刪除字典中的最後一對鍵和值。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved