首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有人能解释我做错了什么吗?

有人能解释我做错了什么吗?
EN

Stack Overflow用户
提问于 2022-02-10 17:26:42
回答 1查看 70关注 0票数 -4

问题:-编写一个Python函数transpose( m ),该函数以二维矩阵m为输入,并返回m的转置。参数m应保持不受函数的干扰。

代码语言:javascript
运行
复制
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]]

错误

lstj.append(mi)

IndexError:列出超出范围的索引

EN

回答 1

Stack Overflow用户

发布于 2022-02-10 17:39:39

List l有两个包含5和6个元素的列表。

因此,jrange(len(m[1]))中的范围是0-5(6个数字),这导致索引超出lst的范围(只有5个元素)。

代码语言:javascript
运行
复制
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]]

但是我会在函数的开头添加一个检查部分。

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71069612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档