我正在用 python 練習串列理解。嘗試創建指定某些條件的串列串列。所以我寫了這個程式:
def perm(x,y,z,n):
a = range(x y z)
b = []
for i in a:
for j in a:
for k in a:
if 0 <= i <= x and 0 <= j <= y and 0 <= k <= z and i j k != n:
b.append([i,j,k])
return b
print(perm(1,1,2,3))
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [ 1, 0, 1], [1, 1, 0], [1, 1, 2]]
這正是我想要的輸出。但如果我嘗試使用串列理解:
return ([b.append(i) for i in a for j in a for k in a if 0 <= i <=x and 0 <= j <= y and 0 <= k <= z and i k j != n])
Or
return b.append[(i for i in a for j in a for k in a if 0 <= i <=x and 0 <= j <= y and 0 <= k <= z and i k j != n])
它回傳一個 None 或 None 的串列。
我該如何解決?我也在研究演算法并試圖理解。我讀過一些文章,但感到困惑。我有一些問題,例如如何計算任何給定程式的效率?有標準的方法嗎?我如何知道是否必須更改代碼才能獲得最佳結果?如果有人可以用最基本的術語為我分解它,或者如果主題太大而無法涵蓋,那么指向一些資源會很有幫助。謝謝!
uj5u.com熱心網友回復:
list.append確實回傳None。你必須做的:
def perm(x,y,z,n):
a = range(x y z)
return [[i,j,k] for i in a for j in a for k in a if 0 <= i <= x and 0 <= j <= y and 0 <= k <= z and i j k != n]
通常,以下兩個是等效的(變數名稱只是隨機的,它們與您的示例無關):
lst = []
for a in x:
for b in y:
if c:
lst.append(d)
lst = [d for a in x for b in y if c]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340112.html
