代码之家  ›  专栏  ›  技术社区  ›  Nope

Python:列出不同的值

  •  7
  • Nope  · 技术社区  · 16 年前

    [[x for i in range(3) if j <= 1: x=1 else x=2] for j in range(3)]
    

    因此,它应该返回如下内容:

    [[1,1,1],
     [1,1,1],
     [2,2,2]]
    

    谢谢你的帮助。

    3 回复  |  直到 16 年前
        1
  •  14
  •   Greg Hewgill    16 年前

    看起来好像你在寻找这样的东西:

    [[1 if j <= 1 else 2 for i in range(3)] for j in range(3)]
    

    conditional expression 如果您来自C或Java之类的语言,则与您可能习惯的有点不同:

    表情 x if C else y 首先评估 C ( C 是的, 计算并返回其值;否则 Y 计算并返回其值。

    做同样事情的一个略短的方法是:

    [[1 if j <= 1 else 2]*3 for j in range(3)]
    
        2
  •  14
  •   Alex Martelli    16 年前

    Greg的回答是正确的,尽管生成所需结果的更简单、更快的表达式是

    [[j] * 3 for j in (1, 1, 2)]
    

    i、 记住这一点 for range 只有;-),存在列表乘法,依此类推;-)。

        3
  •  1
  •   Juparave    16 年前

    >>> [[(1 if j<1 else 2) for i in range(3)] for j in range(3)]
    [[1, 1, 1], [2, 2, 2], [2, 2, 2]]
    

    第二次j=1,因此j<1失败