["python","list","tuples"]
What's the difference between lists enclosed by square brackets and parentheses in Python?

>>> x=[1,2] >>> x[1] 2 >>> x=(1,2) >>> x[1] 2 Are they both valid? Is one preferred for some reason?
Square brackets are lists while parentheses are tuples. A list is mutable, meaning you can change its contents: >>> x = [1,2] >>> x.append(3) >>> x [1, 2, 3] while tuples are not: >>> x = (1,2) >>> x (1, 2) >>> x.append(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'tuple' object has no attribute 'append' The other main difference is that a tuple is hashable, meaning that you can use it as a key to a dictionary, among other things. For example: >>> x = (1,2) >>> y = [1,2] >>> z = {} >>> z[x] = 3 >>> z {(1, 2): 3} >>> z[y] = 4 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' Note that, as many people have pointed out, you can add tuples together. For example: >>> x = (1,2) >>> x += (3,) >>> x (1, 2, 3) However, this does not mean tuples are mutable. In the example above, a new tuple is constructed by adding together the two tuples as arguments. The original tuple is not modified. To demonstrate this, consider the following: >>> x = (1,2) >>> y = x >>> x += (3,) >>> x (1, 2, 3) >>> y (1, 2) Whereas, if you were to construct this same example with a list, y would also be updated: >>> x = [1, 2] >>> y = x >>> x += [3] >>> x [1, 2, 3] >>> y [1, 2, 3]