【问题标题】:Python, Error or incorrect output in function sum over lists of listsPython,列表列表的函数总和中的错误或错误输出
【发布时间】:2020-04-16 20:02:05
【问题描述】:

创建函数以对列表列表中的值求和时收到错误

示例: 寻求生成这种类型的输出

listtest = [1,2,3,4,5,6]
print(sum(listtest)) # output is 21

但是对于列表列表

listsample = [[1,2,3,4,5],[1,2,5,4,6,7],[7,8,9,5,6]]
# Desired_output= [15,25,35]

我知道这可以做到并且有效

listsample = [[1,2,3,4,5],[1,2,5,4,6,7],[7,8,9,5,6]]
result = list(map(sum,listsample))
print(result)
# Desired_output= [15,25,35]

如何操作 sum 函数以使其在函数内无错误通过?

我已经评论了尝试的方法和结果,请取消评论以测试或运行代码。

listsample = [[1,2,3,4,5],[1,2,5,4,6,7],[7,8,9,5,6]]
import itertools as itr
def sumrows(ls):
    for i in ls:
        for subls in range(0,len(i)):
            # opt = 0
            # opt = opt + i[subls] # -->> generates output of None
            # return sum(subls for i in range(0,len(i))) # -->> generates unusual output of 0 - I'm not sure how this value is arrived at
            # return list(map(sum, subls)) # -->> generates error " 'int' object is not iterable "
            # return list(i(sum((subls)))) # -->> generates error " 'int' object is not iterable "
            # return list(i(sum(itr.chain.from_iterable(subls))))  # -->> generates error " 'int' object is not iterable "

print("output", sumrows(listsample))

【问题讨论】:

  • 我很困惑你到底想要完成什么
  • 第 1 点:return 立即从函数返回,因此在第一次迭代后您不会执行任何操作。
  • 第一个输出None,因为你没有返回任何东西。
  • 在你的代码中 subls = 0,所以 Python 对你说:1)零之和为零,1)你不能遍历一个整数值,

标签: python list function loops list-comprehension


【解决方案1】:

您似乎正在尝试创建一个新的sum 函数来接受列表列表:

def new_sum(l):
    return [sum(e) for e in l]

listsample = [[1,2,3,4,5],[1,2,5,4,6,7],[7,8,9,5,6]]
print(new_sum(listsample))
# outputs [15, 25, 35]

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2016-03-12
    • 1970-01-01
    相关资源
    最近更新 更多