Python:DataTypes

From wiki
Revision as of 13:00, 18 September 2018 by Hdridder (talk | contribs) (→‎Slicing)
Jump to navigation Jump to search


Object Classes

Lots of things to tell about strings, they have there own string page. Objects are iterable if they can contain more than 1 ordered objects (string, list, tuple, dict). Objects are mutable if their content can be changed (list, set, dict)

isinstance(<obj>, <class>)
Boolean (returns True or False) to check if <obj> is an instance of <class>

Note: Variables are pointers to objects, not the object itself.

list

Class of iterable, mutable objects. Lists can be compared to arrays in other languages. Lists can contain a mixture of all kind of objects.

lst1 = []
Initialize an empty list
lst1.append(2)
Add the '2' object to the end of lst1
lst1.pop(n)
Remove and return nth element from lst1. Last element if n is not specified.
lst1=list(object)
Convert object to a list (object is e.g. set, tuple or string)
lst1.sort()
Sort lst1 and return 'None' object
lst2 = sorted(iterable)
Return the iterable object sorted as list

More on sorting e.g. using keys.

set

Class of non iterable, mutable objects. Objects added to sets are hashed. Therefor:

  • Only immutable objects can be added to a set.
  • Sets cannot hold duplicate objects (adding an object again does not change the set).
  • Checking if a set holds an object is very fast.
set1 = set()
Initialize an empty set
set1 = set([<values>])
Initialize a set with <values>. Note the list-format of <values>.
set1.add(2)
Add the '2' object to set1. You can add only 1 object at a time.
set1.discard(2)
Remove the '2' object from set1 (returns None object)
diffset = set1 - set2
diffset will have all elements of set1 that are not in set2

Tuple

Class of iterable, immutable objects. Results from database queries are by default returned as tuple.

tpl1 = ()
Initialize an empty tuple

Dictionary or dict

Class of iterable, mutable objects. Dictionary's can be compared to perl hashes.

dict1 = {}
Initialize an empty dictionary.
dict1 = { column1: value1, column2: value2 }
Initialize dictionary with data
if key in dict:
Test if key exists in dict. if dict[key]: will throw a keyerror if it does not exist.
dict1.update(dict2)
Add dict2 to dict1
dict1.pop(key)
Remove key from dict1, return dict1[key] if successful, None if key does not exist in dict1.

Code example:

dict = {}
dict["name1"] = {}
dict["name1"]["street"] = "mystreet"
 
for name in dict:
   print name
   for key2 in dict[name]:
      print key2,dict[name][key2]
 
for name in dict:
   print name
   for key2 in sorted(dict[name].keys()):
      print key2,dict[name][key2]

None

The None object is returned e.g. if nothing is found in a re.search. The None object is not an empty string

Range

Constructor of immutable sequences of integers. Use with list, set, tuple to create the desired object, or for loops.

range(start,stop,step)
Generic format. If you leave out step, step = 1. If only 1 parameter is provided, it is the stop number, start = 0, step = 1
for i in range (2,8,2):
    print(i)

DateTime

Lots more to do than setting timestamps (to be added)

from datetime import datetime
timestamp = datetime.now().strftime("%y%m%d_%H%M%S")

Slicing

You can address all iterable datatypes partly or in a difference sequence.

object[b:e:s]
Generic format where b=Begin (counting starts at 0), e=End, s=Stepsize (negative stepsize starts counting at the end)

Examples:

'last element of string'[-1]
'string in reversed order'[::-1]
'element 2,3 and 5 from string'[1:6:2]