我有一个数组nums=[-1, 0, 1, 2, -1, -4]，请您使用Python代码找出所有和为0的三元组。要求您以markdown格式输出代码，并附上简要的解释说明，字数不超过150字。
user
```markdown
# Python代码找出数组中所有和为0的三元组

def three_sum(nums):
    nums.sort()  # 排序
    result = []
    for i in range(len(nums) - 2):
        if i > 0 and nums[i] == nums[i - 1]:  # 去重
            continue
        left, right = i + 1, len(nums) - 1
        while left < right:
            s = nums[i] + nums[left] + nums[right]
            if s < 0:
                left += 1
            elif s > 0:
                right -= 1
            else:
                result.append((nums[i], nums[left], nums[right]))
                while left < right and nums[left] == nums[left + 1]:
                    left += 1
                while left < right and nums[right] == nums[right - 1]:
                    right -= 1
                left += 1
                right -= 1
    return result

nums = [-1, 0, 1, 2, -1, -4]
print(three_sum(nums))
```
这段代码首先对输入数组进行排序，然后使用三重循环的优化版本，即外层循环遍历每个元素，内层使用双指针方法查找其他两个数，使三数之和为0。同时，为了防止结果中出现重复的三元组，加入了相应的去重逻辑。
assistant