Some basic python (a.k.a. cheat sheet)
[Under construction]
Basics
- To get python: https://www.python.org/
- To run python in a browser: https://www.skulpt.org/
- To run python with a simple GUI add-on in a browser: https://www.codeskulptor.org/
- Interactive lessons: https://www.learnpython.org/
- Nice python guide: https://docs.python-guide.org/
- To add a comment, start it with "#" (pound/number character). Can be inline or on a separate line. Easy way to ignore code that is not ready/not working.
- To make a file into a script, include this at the top: #! /usr/bin/env python
Syntax to remember
Python data structuresMath
>>> 2+6 # addition8
>>> 2*4 # multiplication8
>>> 2**3 # powers8
Usual order of operations apply:
>>> 2+4*314
>>> (2+4)*318
Package
math
makes available more complex functions
>>> import math >>> math.log(100,10)2
Strings
Strings are essentially lists of characters
>>> "this is a string"'this is a string'
>>> s="this is a string stored in variable 's'."
>>> print sthis is a string stored in variable 's'.
Length of the string:
>>> len(s)40
First and last elements of string 's':
>>> s[0], s[-1]('t', '.')
Concatenate strings:
>>> s + " 's' is " + str(len(s)) + " characters long""this is a string stored in variable 's'. 's' is 40 characters long"
Imports
Importing modules is a key element of python, either built in modules (os, sys
), or those of your own design.
Best practice is to import all modules at the beginning of a script
import os import math [...] x = math.log(20)
Also possible is to import all the functions within a module, and avoid including the module name. However, it is usually better to be explicit, since the function might have been redefined at some point, or overwritten by a different module.
from math import * [...] x = log(20)
Functions
Define a new function like so:
def myFunction(param1, param2=12, param3=0):
""" Description of what the function does goes here
Args:
param1 -- this is an integer...
param2 -- this is another integer with default value 12
param3 -- this is another integer with default value 0
Returns:
results-- also and integer
"""
result = param1 * param2 + param3
if(result > 0):
return result
else:
return False
myFunction(2)24
myFunction(2,3)6
myFunction(2,param2=4)8
myFunction(2,param3=1,param2=4)9
Other useful tidbits
Easy swap variables:
>>> a, b = b, a
Scripts
Script copybackups.py copies files modified in the last -t days into a (hardcoded) backup folder. Not the cleanest script but it does the job.
I use this as a cron job to create daily backups of certain files that have been modified that day.
Lists
Lists are generally a collection of similar elements, each dealt with individually. They are mutable, i.e., elements can be added, removed, changed. Can be used as stacks or queues.
>>> list1 = ['a','b','c','d','e','f','g']
To get subset of list starting from 3rd element ('c'):
>>> list1[2:]['c', 'd', 'e', 'f', 'g']
To get subset of list starting from 3rd to last element ('e'):
>>> list1[-3:]['e', 'f', 'g']
To copy list to new variable:
>>> list2 = list1[:]
To link (reference) new variable to existing list:
>>> list3 = list1
The difference in the assigments:
>>> list2.append('h') >>> print list2['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> print list1['a', 'b', 'c', 'd', 'e', 'f', 'g']
VS
>>> list3.append('h') >>> print list3['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> print list1['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Make a string out of a list of strings
"".join(list1)'abcdefgh'
Make a string out of a list of strings with a delimiter -
"-".join(list1)'a-b-c-d-e-f-g-h'
Compare beginning or end of string with another string
>>> mystring = "filename.txt" >>> mystring.endswith(".txt")True
Copy a list
>>> list4 = list3[:] >>> list3[0] = 'apple' >>> print list3; print list4['apple', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Link to a list (change one list, the other one changes too!)
>>> list5 = list3 >>> list3[2] = 'cantaloupe' >>> print list3; print list5['apple', 'b', 'cantaloupe', 'd', 'e', 'f', 'g', 'h']
['apple', 'b', 'cantaloupe', 'd', 'e', 'f', 'g', 'h']
List comprehensions provide a concise way to create and manipulate lists:
>>> squares = [x**2 for x in range(10)] >>> print squares[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Print only even elements of squares
>>> print [x for x in squares if x%2==0][0, 4, 16, 36, 64]
Make a list of n of the same item
>>> n = 5 >>> boring_list = [0]*n >>> print boring_list[0, 0, 0, 0, 0]
Tuples
Tuples are simple structures of different element types that are related. They are immutable and the order matters. Elements cannot be reassigned.
>>> items = ('Item1','Item2','Item3','Item4','Item5')
>>> items[1]'Item2'
>>> items[1] = 'differentItem'TypeError: 'tuple' object does not support item assignment
Sets
Unordered collection of elements with no duplicates
>>> list4 = [1,2,3,1,4,6,7,3,2,7,3,2,5,3,1,5,3,4,] >>> print set(list4)set([1, 2, 3, 4, 5, 6, 7])
Dictionaries
Maps a set of keys to a set of values. Indexing is done by the key rather than number ranges.
>>> dict1 = {} #empty dictionary
Initialize with key:values
>>> dict1 = {'a':'apple','b':'banana','c':'cantaloupe'} >>> dict1['a']'apple'
Get list of all keys and list of all values
>>> (dict1.keys(),dict1.values())(['a', 'c', 'b'], ['apple', 'cantaloupe', 'banana'])
Get the value for a given key, or get a preset default value if key doesn't exist
>>> dict1.get('a', 'default1')'apple'
>>> dict1.get('d', 'default2')'default2'