这是列表中元素之间的求和问题。为什么“没有”会出现?

2024-03-28 09:56:50 发布

您现在位置:Python中文网/ 问答频道 /正文

def add(t1, t2):
if len(t1) == len(t2):
    for i in range(len(t1)):
        [t1[i]+t2[i]]
elif len(t1) != len(t2):
    return None

t1 = [42, 1024, 23]
t2 = [6, 28, 496]
t3 = add(t1, t2)
print(t1)
print(t2)
print(t3)

列表中元素的问题对我来说太难了。 请给我一点帮助


3条回答

通过从if语句返回来尝试此操作

def add(t1, t2):
    if len(t1) == len(t2):
        return [(t1[i] + t2[i] ) for i in range(len(t1)) ]
    
    return None

或者简短一点:

def add(t1, t2):
    return [sum(i) for i in zip(t1, t2)] if len(t1) == len(t2) else None

甚至更短:

def add(*x):
    return [*map(sum, zip(*x))] if set(map(len, x)) == 1 else None

对于成对和的列表,您可以按如下方式修改代码:

def add(t1, t2):
    if len(t1) == len(t2):
        result = []
        for i in range(len(t1)):
            result.append(t1[i]+t2[i])
        return result
    else:
        return None

当然,有一些UTIL可以缩短这一时间:

def add(t1, t2):
    if len(t1) == len(t2):
        return [*map(sum, zip(t1, t2))]
    # None returned implicitly

这个内置的ladden代码可以解释为“将sum函数映射到zip生成的对上,并将结果的和解压到列表中”

请参阅一些文档:

相关问题 更多 >