This is related to leetcode problem #39.
I started with `results.append(solution)`, which does not append properly to the list, and found in the solution that `results.append(solution[:])` works. What's the difference between these two syntax?

```
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
    results=[]
    def backtracking(candidates,target,start,solution,results):
        #print(start,target,solution,results)
        if target<0:
            return
        if target==0:
            results.append(solution[:])
            return

        for i in range(start,len(candidates)):
            solution.append(candidates[i])
            backtracking(candidates,target-candidates[i],i,solution,results)
            solution.pop()

    backtracking(candidates,target,0,[],results)
    return results

```