我正在学习一些有关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总和是否为零。
答案 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)]