# Python has a print functionprint("I'm Python. Nice to meet you!")# => I'm Python. Nice to meet you!# By default the print function also prints out a newline at the end.# Use the optional argument end to change the end string.print("Hello, World",end="!")# => Hello, World!# Simple way to get input data from consoleinput_string_var=input("Enter some data: ")# Returns the data as a string# There are no declarations, only assignments.# Convention in naming variables is snake_case stylesome_var=5some_var# => 5# Accessing a previously unassigned variable is an exception.# See Control Flow to learn more about exception handling.some_unknown_var# Raises a NameError# if can be used as an expression# Equivalent of C's '?:' ternary operator"yay!"if0>1else"nay!"# => "nay!"# Lists store sequencesli=[]# You can start with a prefilled listother_li=[4,5,6]# Add stuff to the end of a list with appendli.append(1)# li is now [1]li.append(2)# li is now [1, 2]li.append(4)# li is now [1, 2, 4]li.append(3)# li is now [1, 2, 4, 3]# Remove from the end with popli.pop()# => 3 and li is now [1, 2, 4]# Let's put it backli.append(3)# li is now [1, 2, 4, 3] again.# Access a list like you would any arrayli[0]# => 1# Look at the last elementli[-1]# => 3# Looking out of bounds is an IndexErrorli[4]# Raises an IndexError# You can look at ranges with slice syntax.# The start index is included, the end index is not# (It's a closed/open range for you mathy types.)li[1:3]# Return list from index 1 to 3 => [2, 4]li[2:]# Return list starting from index 2 => [4, 3]li[:3]# Return list from beginning until index 3 => [1, 2, 4]li[::2]# Return list selecting elements with a step size of 2 => [1, 4]li[::-1]# Return list in reverse order => [3, 4, 2, 1]# Use any combination of these to make advanced slices# li[start:end:step]# Make a one layer deep copy using slicesli2=li[:]# => li2 = [1, 2, 4, 3] but (li2 is li) will result in false.# Remove arbitrary elements from a list with "del"delli[2]# li is now [1, 2, 3]# Remove first occurrence of a valueli.remove(2)# li is now [1, 3]li.remove(2)# Raises a ValueError as 2 is not in the list# Insert an element at a specific indexli.insert(1,2)# li is now [1, 2, 3] again# Get the index of the first item found matching the argumentli.index(2)# => 1li.index(4)# Raises a ValueError as 4 is not in the list# You can add lists# Note: values for li and for other_li are not modified.li+other_li# => [1, 2, 3, 4, 5, 6]# Concatenate lists with "extend()"li.extend(other_li)# Now li is [1, 2, 3, 4, 5, 6]# Check for existence in a list with "in"1inli# => True# Examine the length with "len()"len(li)# => 6# Tuples are like lists but are immutable.tup=(1,2,3)tup[0]# => 1tup[0]=3# Raises a TypeError# Note that a tuple of length one has to have a comma after the last element but# tuples of other lengths, even zero, do not.type((1))# => <class 'int'>type((1,))# => <class 'tuple'>type(())# => <class 'tuple'># You can do most of the list operations on tuples toolen(tup)# => 3tup+(4,5,6)# => (1, 2, 3, 4, 5, 6)tup[:2]# => (1, 2)2intup# => True# You can unpack tuples (or lists) into variablesa,b,c=(1,2,3)# a is now 1, b is now 2 and c is now 3# You can also do extended unpackinga,*b,c=(1,2,3,4)# a is now 1, b is now [2, 3] and c is now 4# Tuples are created by default if you leave out the parenthesesd,e,f=4,5,6# tuple 4, 5, 6 is unpacked into variables d, e and f# respectively such that d = 4, e = 5 and f = 6# Now look how easy it is to swap two valuese,d=d,e# d is now 5 and e is now 4# Dictionaries store mappings from keys to valuesempty_dict={}# Here is a prefilled dictionaryfilled_dict={"one":1,"two":2,"three":3}# Note keys for dictionaries have to be immutable types. This is to ensure that# the key can be converted to a constant hash value for quick look-ups.# Immutable types include ints, floats, strings, tuples.invalid_dict={[1,2,3]:"123"}# => Yield a TypeError: unhashable type: 'list'valid_dict={(1,2,3):[1,2,3]}# Values can be of any type, however.# Look up values with []filled_dict["one"]# => 1# Get all keys as an iterable with "keys()". We need to wrap the call in list()# to turn it into a list. We'll talk about those later. Note - for Python# versions <3.7, dictionary key ordering is not guaranteed. Your results might# not match the example below exactly. However, as of Python 3.7, dictionary# items maintain the order at which they are inserted into the dictionary.list(filled_dict.keys())# => ["three", "two", "one"] in Python <3.7list(filled_dict.keys())# => ["one", "two", "three"] in Python 3.7+# Get all values as an iterable with "values()". Once again we need to wrap it# in list() to get it out of the iterable. Note - Same as above regarding key# ordering.list(filled_dict.values())# => [3, 2, 1] in Python <3.7list(filled_dict.values())# => [1, 2, 3] in Python 3.7+# Check for existence of keys in a dictionary with "in""one"infilled_dict# => True1infilled_dict# => False# Looking up a non-existing key is a KeyErrorfilled_dict["four"]# KeyError# Use "get()" method to avoid the KeyErrorfilled_dict.get("one")# => 1filled_dict.get("four")# => None# The get method supports a default argument when the value is missingfilled_dict.get("one",4)# => 1filled_dict.get("four",4)# => 4# "setdefault()" inserts into a dictionary only if the given key isn't presentfilled_dict.setdefault("five",5)# filled_dict["five"] is set to 5filled_dict.setdefault("five",6)# filled_dict["five"] is still 5# Adding to a dictionaryfilled_dict.update({"four":4})# => {"one": 1, "two": 2, "three": 3, "four": 4}filled_dict["four"]=4# another way to add to dict# Remove keys from a dictionary with deldelfilled_dict["one"]# Removes the key "one" from filled dict# From Python 3.5 you can also use the additional unpacking options{'a':1,**{'b':2}}# => {'a': 1, 'b': 2}{'a':1,**{'a':2}}# => {'a': 2}# Sets store ... well setsempty_set=set()# Initialize a set with a bunch of values.some_set={1,1,2,2,3,4}# some_set is now {1, 2, 3, 4}# Similar to keys of a dictionary, elements of a set have to be immutable.invalid_set={[1],1}# => Raises a TypeError: unhashable type: 'list'valid_set={(1,),1}# Add one more item to the setfilled_set=some_setfilled_set.add(5)# filled_set is now {1, 2, 3, 4, 5}# Sets do not have duplicate elementsfilled_set.add(5)# it remains as before {1, 2, 3, 4, 5}# Do set intersection with &other_set={3,4,5,6}filled_set&other_set# => {3, 4, 5}# Do set union with |filled_set|other_set# => {1, 2, 3, 4, 5, 6}# Do set difference with -{1,2,3,4}-{2,3,5}# => {1, 4}# Do set symmetric difference with ^{1,2,3,4}^{2,3,5}# => {1, 4, 5}# Check if set on the left is a superset of set on the right{1,2}>={1,2,3}# => False# Check if set on the left is a subset of set on the right{1,2}<={1,2,3}# => True# Check for existence in a set with in2infilled_set# => True10infilled_set# => False# Make a one layer deep copyfilled_set=some_set.copy()# filled_set is {1, 2, 3, 4, 5}filled_setissome_set# => False