簡體   English   中英

誰能解釋我做錯了什么

[英]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 個元素的列表。

因此, jrange(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM