【问题标题】:list comprehension error and algorithm [closed]列表理解错误和算法[关闭]
【发布时间】:2016-03-09 17:31:30
【问题描述】:

关于 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 为例,如果alist 中的元素不为零且alist 中的元素为零,我想返回一个名为count 的列表,其中包含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]

非常感谢。

【问题讨论】:

  • 您希望x++ 做什么? Python 没有 ++ 运算符。列表推导式创建一个新列表,所以也许你想要[x + 1 for x in alist if x != 0]
  • 请坚持每个帖子的一个问题。将您的两个问题分成不同的帖子。
  • @vaultah 非常感谢。

标签: python list list-comprehension


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多