总结一份清单

时间:2018-01-31 07:24:03

标签: python python-3.x

我在* python v3中发现了一件奇怪的事。* 6。以下代码返回TypeError: unsupported operand type(s) for +: 'int' and 'list'

arr = [1, 2, 3, 4, 5]
print(sum([[i] for i in arr]))

为什么会这样?我如何总结一份清单?

4 个答案:

答案 0 :(得分:2)

以下是REPL的帮助:

>>> help(sum)
sum(iterable, start=0, /)
    Return the sum of a 'start' value (default: 0) plus an iterable of numbers

    When the iterable is empty, return the start value.
    This function is intended specifically for use with numeric values and may
    reject non-numeric types.

因此,内置sum会返回start值的总和,即0和可迭代的数字。 Python并不能防止你事先滥用函数,它相信你至少试图做正确的事情。当然,如果你碰巧传递了一个列表列表,那么第一个列表元素将与0相加,提出:

TypeError: unsupported operand type(s) for +: 'int' and 'list'

实际上,如果你传递一个start参数,一个空列表,在这种情况下,它可以工作:

>>> sum([[e] for e in x], [])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

然而,这将是低效的。您应该更喜欢[x for sublist in list_of_lists for x in sublist]或任何其他线性时间算法。

答案 1 :(得分:1)

首先,您的for i in range(1,n+1): df_invalid_i=df_i[df_i['SPEED'+str(i)]>500] df_valid_i=~df_invalid_i Invalid_cycles_i=df[df_invalid] df=df[df_valid] print(Invalid_cycles_i) print(df) 会返回df_1

为什么不只是简单地打印数组的总和:

[[i] for i in arr]

或者,如果您不想更改[[1], [2], [3], [4], [5]]

print(sum(arr))

我更喜欢使用[[i] for i in arr],更短的代码和可读性。

答案 2 :(得分:0)

只做...

arr = [1, 2, 3, 4, 5]
print sum(arr)

您希望求和多个元素。您已经有一个输入功能的列表。为什么要使用已有的列表来获得列表理解?

如果您希望将展平列表列表放入单个列表中,为了求和全部,您可以观看此thread,然后使用总和就像我上面那样。

答案 3 :(得分:0)

你应该这样使用它。

$scope.empobj=[{first_name:"new",last_name:"sjkk",id:"2"},{first_name:"new",last_name:"sjkk",id:"3"},{first_name:"new",last_name:"sjkk",id:"4"}];

$scope.selectedemp1= function(id){
console.log(id);

如果你使用括号' i'像[i]一样,这意味着“我”。是一个元组中的元素,你不能用列表添加一个整数。

TypeError:+:' int'不支持的操作数类型和'列出' - > 这意味着它无法添加带有列表的整数。因为当你使用for循环时,它每次都会给你一个元素,循环被执行,即一个整数,但你期望一个列表返回到sum()函数。因此,它不会那样工作。