![](/img/trans.png)
[英]Can anyone tell me what I am doing wrong, dictionary vs list in Python?
[英]Can anyone explain what am i doing wrong
問題:- 寫一個 Python function transpose(m) 將二維矩陣 m 作為輸入並返回 m 的轉置。 參數 m 應該不受 function 的干擾。
def transpose(l):
m=l[:]
lst=[[] for x in range(len(m[0)]
for i in range(0,len(m)):
for j in range(0,len(m[i])):
lst[j].append(m[i][j])
return lst
l=[[1,2,3,4,5],[4,5,6,7,8,9]]
錯誤
lst[j].追加(m[i][j])
IndexError:列表索引超出范圍
您的 List l
有兩個包含 5 和 6 個元素的列表。
因此, j
在range(len(m[1]))
中的范圍是 0 - 5(6 個數字),這導致索引超出lst
的范圍(只有 5 個元素)。
def transpose(l):
lst=[[] for x in range(len(l[0]))]
for i in range(len(l)):
for j in range(len(l[i])):
lst[j].append(l[i][j])
return lst
l = [[1,2,3,4,5],[4,5,6,7,8]]
但我會在 function 的開頭添加一個檢查部分
def transpose(l):
iterator = iter(l)
lists_len = len(next(iterator))
if not all(len(a) == lists_len for a in iterator):
# Do something here
lst=[[] for x in range(len(l[0]))]
for i in range(len(l)):
for j in range(len(l[i])):
lst[j].append(l[i][j])
return lst
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.