列表理解错误和算法

时间:2016-03-09 17:31:30

标签: python list list-comprehension

有一些关于python中列表理解的问题。第一个是我不知道为什么下面的代码中有错误:

alist = [1,2,3,4,5,6,0,9,9,4,5,0,0,2,3,0,9,6]
test = [x++ for x in alist if x != 0]
File "<stdin>", line 1
test = [x++ for x in list1 if x != 0]
               ^
SyntaxError: invalid syntax

另一个问题是我想写一个列表理解来计算非零元素。以alist为例,如果count中的元素不为零,则alist中的元素为零,我想返回一个名为alist的列表,其中包含1或0:1 }是零。所以结果应该是:

alist = [1,2,3,4,5,6,0,9,9,4,5,0,0,2,3,0,9,6] 
count = [1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,0,1,1]

非常感谢你。

2 个答案:

答案 0 :(得分:1)

Python没有++运算符(或等效的递增或递减运算符),因为Python整数对象(和浮点对象)是不可变的

所以你需要做

alist = [1,2,3,4,5,6,0,9,9,4,5,0,0,2,3,0,9,6]
test = [x+1 for x in alist if x != 0]
print(test)

<强>输出

[2, 3, 4, 5, 6, 7, 10, 10, 5, 6, 3, 4, 10, 7]

答案 1 :(得分:1)

您的第二个问题,请尝试以下

    count=[1 if x>0 else 0 for x in alist]