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]
Answer from jterrace on Stack OverflowSquare 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]
One interesting difference :
lst=[1]
print lst // prints [1]
print type(lst) // prints <type 'list'>
notATuple=(1)
print notATuple // prints 1
print type(notATuple) // prints <type 'int'>
^^ instead of tuple(expected)
A comma must be included in a tuple even if it contains only a single value. e.g. (1,) instead of (1).
Meaning of square brackets
Question regarding using square brackets to access values of variables
In python, when to use a square or round brackets? - Stack Overflow
Why Square Brackets in Dictionaries
Hello,
Please review the code in bold.
My question is in both examples,
Example 1.
python_topics = ["variables", "control flow", "loops", "modules", "classes"]
length = len(python_topics)
index = 0
while index < length:
print("I am learning about " + python_topics[index])
index += 1
Example 2.
favorite_fruit = "blueberry"
last_char = favorite_fruit**[len(favorite_fruit) - 1]**
Output: Y
My question is, their a way to describe what the square brackets are doing? Would you say that the square brackets are used to access or transfer the value of the variable? Hopefully this question makes sense. Thank you very much.
They are part of the Python syntax and unlike using single (') or double (") quotes, they can pretty much never be interchanged.
Square and rounded brackets can mean so many different things in different circumstances. Just to give an example, one may think that both the following are identical:
a = [1,2,3]
a = (1,2,3)
as a[0] gives 1 in both cases. However, the first one is creating a list whereas the second is a tuple. These are different data types and not knowing the distinction can lead to difficulties.
Above is just one example where square and rounded brackets differ but there are many, many others. For example, in an expression such as:
4 * ((12 + 6) / 9)
using square brackets would lead to a syntax error as Python would think you were trying to create a nested list:
4 * [[12 + 6] / 9]
So hopefully you can see from above, that the two types of brackets do completely different things in situations which seem identical. There is no real rule of thumb for when one type does what. In general, I guess that square brackets are used mainly for lists and indexing things whereas rounded brackets are for calculations (as you would in maths) and functions etc.
Hope this helps you out a bit!
It's hard to answer succinctly, but I can give you some common examples.
Square brackets define lists:
my_list = [1, 2, 3, 4]
They are also used for indexing lists. For instance:
print(my_list[1])
Returns 2.
Additionally, they are frequently used to index dictionaries, which are defined with curly brackets:
my_dict = {5:'a', 6:'b', 7:'c'}
The indexing for dictionaries requires that I input the "key" as follows:
print(my_dict[6])
Returns b.
Functions are called using round brackets. For instance, if I want to add an element to my list, I can call the append() function:
my_list.append(8)
I have just added 8 to my list. You will notice that when I called the print function I also used curved brackets.
This is by no means comprehensive, but hopefully it will give a starting point.