Python/CheatSheet: Difference between revisions

From Wiki
mNo edit summary
mNo edit summary
 
Line 658: Line 658:
</pre>
</pre>
</blockquote>
</blockquote>
[[Category:Programming]]

Latest revision as of 15:13, 28 September 2024

Other articles
Libraries

Python Shebang

#!/usr/bin/env python3

Comments

# This is a comment
print("Hello, World!")

Variables

Tuples

  • not changeable
a = (1,2,3)
b = ("test", "with", "strings")
b[0]
-> test

Lists

  • changeable
c = [4,5,6]
d = ["this", "is", "a", "list"]
d[0]                             -> 'this'
d[0] = 'this'
d[0:1] = ['this', 'is']
d[0:-1] = ['this', 'is', 'a']
d.index(x)                       # Return index of the first item whose value is x
len(d)                           # length
'term' in d                      # find
d.count('new')                   # count number of 'new'

d.append('dude')                 # add item to list
d.extend(['more', 'elements']    # Extend the list by appending all the items from the iterable
d.insert(i,x)                    # Insert an item at a given position

del d[0:1]                       # remove item at given index
d.remove(x)                      # Remove the first item from the list whose value is x
d.pop()                          # Remove the item at the given position in the list
d.clear()                        # remove all items

d.reverse()                      # reverse elements in place
d.sort(key=None, reverse=False)  # sort the items of the list

List Comprehension

[expression for item in list (if condition)]

[x*5 for x in range(5)]                        -> [0, 5, 10, 15, 20]
[x for x in range(5) if x%2 == 0]              -> [0, 2, 4]
[i*i for i in range(5)]                        -> [0, 1, 4, 9, 16]


[ x for x in books if (x['language'] == "de"]   # filter


Dictionaries

  • mapping
e = {'size':5, 'color':'red', 'weight':100}
e['size']
-> 5
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
for k, v in e.items():
    print (k, v)
e[k]
e[k] = x
e.clear()
e.copy()
del e[k]
e.get(k,x)
k in e
k not in e
e.items()
e.keys()
e.popitem()
e.setdefault()
e1.update(e2)
e.values()


import copy new_dict = copy.deepcopy(old_dict)

Assigning values

x = 1
first, second, third = sequence
x, y = 0, 1
x, y = y, x+y
x, _, y = (1, 2, 3) 
y += 1

Operators

##### arithmetic operators #####
+        addition
-        subtraction
*        multiplication
/        division
%        modulus
**       exponentiation
//       floor division

##### comparison operators #####
==       equal
!=       not equal
<        less than
<=       less than or equal to
>        greater than
>=       greater than or equal to

is
is not
in
not in

and
or
not

##### bitwise operators #####
&        and
|        or
^        xor
~        not
<<
>>

Flow Control

If Then Else

if x < 0:
    print('Negative')
elif x == 0:
    print('Zero')
else:
    print('More')

For loops

for x in ['cat', 'dog', 'bird']:
    print (x)
for i in [1,2,3,4,5]:
    print (i+10)
for item in container:
    if search_something(item):
        print(item)             # Found it!
        break
else:
       not_found_in_container() # Didn't find anything..
for index, element in enumerate(newarticles):
    print(index, element)

While loops

while test:
    print (answer)
while True:
    print (answer)
    if answer == '2':
        break
x = 0
while x < 50:
    x = x+1    

try ... except

try:
    result = x / y
except ZeroDivisionError:
     print("division by zero!")
else:
     print("result is", result)
finally:
     print("executing finally clause")

Statements

assert           # for debugging, will raise AssertionError if 'assert [false]'
break            # break out of for or while loop
continue         # end current iteration in a for or while loop
nonlocal
pass             # placeholder for future code
raise            # raise exception
return           
yield

Strings

string = "Hello World"
string = 'Hello World'
string = '''multiline
         string'''

string[4]                             # = 'o'
string[-1]                            # = 'd'
string[:-7]                           # = 'Hell'
string.split(' ')                     # ['Hello', 'World']

String functions

capitalize()
center(width)
count(sub,start,end)
decode()
encode()
endswith(sub)
expandtabs()
find(sub,start,end)
index(sub,start,end)
isalnum()
isalpha()
isdigit()
islower()
isspace()
istitle()
isupper()
join()
ljust(width)
lower()
partition(sep)
replace(old,new)                              # replace old string with new string
replace(" ","")                               # remove all spaces
rfind(sub,start,end)
rindex(sub,start,end)
rjust(width)
rpartition(sep)
rsplit(sep)
split(sep)
splitlines()
startswith(sub)
strip()                                       #remove leading and trailing whitespaces
rstrip()
lstrip()

swapcase()
title()
translate(table)
upper()
zfill(width)

''.join(e for e in string if e.isalnum())     # remove all special chars in string

Input & Output

x = input("input:")
print(x+12)
print("Hello world")
print("Integer: %i, Float: %6.2f" % (123, 12.043))
print("Integer: {intvar:i}, Float: {floatvar:.2f}")
print("value of x: {0:05d}".format(x))
print("%3i%6s" % (i, chr(i)))
import sys
sys.argv[0]                 -> first command line argument 

Files

file = open (ordersfile, 'rb')
file.read()
file.readline()
file.readlines()
file.close()
import pickle

with open(ordersfile, 'wb') as fp:
    pickle.dump(orders, fp)

with open (ordersfile, 'rb') as fp:
    orders = pickle.load(fp)
import os.path
os.path.exists(file_path)

Escape sequences

ES Note
\\ backslash
\' '
\" "
\b backspace
\f form feed
\n line feed
\t horizontal tab
\v vertical tab
\N{Name} Unicode by name
\uxxxx 16bit unicode
\uxxxxxxxx 32bit unicode
\123 ASCII code
\xhh Extended ASCII code (hex)

Double underscore variables

  • __file__
    • path of script
import os
os.path.split(__file__)[0] + '/'
  • __name__
    • name of submodule or "__main__", if script is directly started

Functions

User Defined Functions

def userfunction():
    print("Hello")

userfunction()
def userfunction(variable):
    print("Hello", variable)

userfunction('Peter')
def userfunction(variable):
    print("Hello", variable)
    test = 2
    return test
 
print(userfunction('Peter'))    # prints "2"
def userfunction(variable1, variable2 = "John"):
    print("Hello", variable1, variable2)

userfunction("dear")
def userfunction(*variables):
    for var in variables:
        print(var)

userfunction(1,2,3,4)

Lambda

small function, with any number of arguments

x = lambda a : a + 10
print(x(5)) 

x = lambda a, b : a * b
print(x(5, 6)) 

(lambda x, y: x + y)(2, 3)
5

import datetime

today()
now(timezoneinfo)
utcnow()
fromordinal(ordinal)
combine(date,time)
strptime(date,format)
fromtimestamp(timestamp)
utcfromtimestamp(timestamp)

import time

replace()
utcoffset()
isoformat()
__str__()
dst()
tzname()
strftime(format)
sleep()

timeit

from timeit import default_timer as timer

start = timer()
do_something()
end = timer()

print(end-start)

strftime & strptime format

%a    Weekday as locale’s abbreviated name.      Sun, Mon, …, Sat (en_US);So, Mo, …, Sa (de_DE)
%A    Weekday as locale’s full name.             Sunday, Monday, …, Saturday (en_US);Sonntag, Montag, …, Samstag (de_DE)
%w    Weekday as a decimal number. Sundy=0       0, 1, …, 6
%d    Day of the month, zero-padded              01, 02, …, 31
%b    Month as locale’s abbreviated name.        Jan, Feb, …, Dec (en_US);Jan, Feb, …, Dez (de_DE)
%B    Month as locale’s full name.               January, February, …, December (en_US);Januar, Februar, …, Dezember (de_DE)
%m    Month as a zero-padded decimal number.     01, 02, …, 12
%y    Year without century, zero-padded          00, 01, …, 99
%Y    Year with century as a decimal number.     0001, 0002, …, 2013, 2014, …, 9998, 9999
%H    Hour (24-hour clock), zero-padded          00, 01, …, 23
%I    Hour (12-hour clock), zero-padded          01, 02, …, 12
%p    Locale’s equivalent of either AM or PM.    AM, PM (en_US);am, pm (de_DE)
%M    Minute, zero-padded                        00, 01, …, 59
%S    Second,zero-padded                         00, 01, …, 59
%f    Microsecond, zero-padded                   000000, 000001, …, 999999
%z    UTC offset in the form ±HHMM[SS[.ffffff]]  (empty), +0000, -0400, +1030, +063415, -030712.345216
%Z    Time zone name (empty if none)             (empty), UTC, EST, CST
%j    Day of the year, zero-padded               001, 002, …, 366
%U    Week number, Sunday first day of week      00, 01, …, 53
%W    Week number, Monday first day of week      00, 01, …, 53
%c    Locale’s appropriate date and time         Tue Aug 16 21:30:00 1988 (en_US);Di 16 Aug 21:30:00 1988 (de_DE)
%x    Locale’s appropriate date                  08/16/88 (None); 08/16/1988 (en_US); 16.08.1988 (de_DE)
%X    Locale’s appropriate time                  21:30:00 (en_US); 21:30:00 (de_DE)
%%    A literal '%' character.                   %

import os

with ignored(OSError):
    os.remove('somefile.tmp')

sorted()

sorted([5, 2, 3, 1, 4])                                   ->  [1, 2, 3, 4, 5]
sorted("This is a test string".split(), key=str.lower)    ->  ['a', 'is', 'string', 'test', 'This']

user_tuples = [('john', 15),('jane', 12),('dave', 10)]
sorted(user_tuples, key=lambda user: user[1])             ->  [('dave', 10), ('jane', 12), ('john', 15)]

books_sorted = sorted(books_with_review, key=lambda k: k['amz-num'], reverse=True)

other

iter

range
xrange
sorted()
sorted,x, reverse=True)
reversed()