过滤python列表理解

时间:2016-04-05 05:03:14

标签: python list-comprehension

我正在学习一些有关python理解的教程练习。我遇到了一个要求构建一个理解,它返回给定集合中所有数字组合的3元组,总和为零 - 不包括(0,0,0)的简单例子。

我想出了这个:

<form>
  <div class="camera">
    <video id="video">Video stream not available.</video>
    <button id="startbutton">Take photo</button> 
  </div>
  <canvas id="canvas">
  </canvas>
  <div class="output">
    <img id="photo" alt="The screen capture will appear in this box."> 
  </div>
    <script>
     document.getElementById("startbutton").addEventListener("click", function() {
       document.getElementById("photo").onload = function() {
           console.log(this.src);
           alert(this.src);
           document.querySelector("input[type=submit]").disabled = false;
       };          
     })
  </script>
  <input type="submit" disabled>
</form>

有更简洁的方式来写这个吗?似乎应该有一种更好的方法来检查x,y,z总和是否为零。

2 个答案:

答案 0 :(得分:4)

如果订单很重要,您可以使用itertools.permutation()

from itertools import permutation
[sub for sub in permutation(s, 3) if sum(sub) == 0 and sub != (0, 0, 0)]

否则使用itertools.combinations()

答案 1 :(得分:0)

遵循“Python的禅”,我只想对过滤条件做一个简单的改动:

[(x, y, z) for x in s for y in s for z in s if x + y + z == 0 and (x, y, z) != (0, 0, 0)]