PSPP Python Praktikum 1

Page content

Phython Praktikum 1

Lisp vs. Python

Listen

Lisp Python
(apfel banane zitrone) [‘apfel’, ‘banane’, ‘zitrone’]
(car ‘(eins zwei drei)) [‘apfel’, ‘banane’, ‘zitrone’][0]
(cdr ‘(eins zwei drei)) [‘apfel’, ‘banane’, ‘zitrone’][1:]
(lenght ‘(1 2 3)) len([1,2,3])
(append ‘(1 2 3 4) ‘(4 5)) [1,2,3] + [4, 5]

liste[n:m] Teilsequenz vom n-ten bis zum (m-1)-ten Element
liste[n:] Teilsequenz vom n-ten bis zum Ende der Liste
liste[:m] Teilsequenz vom Anfang bis zum (m-1)-ten Element
Ein negativer Index wird von hinten gezählt.

Tupel

Tupel in Python verhalten sich ähnlich wie Listen, sind aber unveränderlich.

(1, 2, 3) Tupel aus drei Zahlen
(1, 2, 3)[:2] Teilsequenz vom n-ten bis zum Ende der Liste
a = “er”, “sie”, “es” Zuweisung des Tupels (’er’, ‘sie’, ’es’)

Dictionaries

Dictionaries speichern Schlüssel-Wert-Paare. Sie werden in geschweiften Klammern geschrie-
ben (und ähneln somit Objekten in JavaScript).

telefon = { “bernd”: “0921/76499”, “susi”: “0371/233444” }
telefon[“susi”]
telefon[“hans”] = “0366/873543”

Funktionen

Lisp Python
(defun list-double (lst)
  (if (not(null lst))
    (cons (* 2 (car lst))
      (list-double (cdr lst)))))
def list_double(seq):
  if(len(seq) != 0):
    return [2 * seq[0]] + list_double(seq[1:])
  else: return []

Vereinfachung mit Python

def list_double(seq):
  return [2*x for x in seq]

Typen und Literale

"spam" + "eggs"    # 'spameggs'
s = "ham"          # s='ham'
"eggs " + s        # "eggs ham"
s * 3              # 'hamhamham'
s[1]+s[:-1]                          # 'aha'  ('a' + 'ha')
"green %s and %s" % ("eggs", s)      # 'green eggs and ham'
('x', 'y')[1]                        # 'y'
z = [1, 2, 3] + [4, 5, 6]            # [1, 2, 3, 4, 5, 6]
z, z[:], z[:0], z[-2], z[-2:]        # ([1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [], 5, [5, 6])
z.reverse(); z                       # [6, 5, 4, 3, 2, 1]
{'a':1, 'b':2}['b']                  # 2
d = {'x':1, 'y':2, 'z':3}            # {'y': 2, 'x': 1, 'z': 3}
d['w'] = 0                           # {'y': 2, 'x': 1, 'z': 3, 'w': 0}      neuer Eintrag im Dictionary
d[(1,2,3)] = 4                       # {'y': 2, 'x': 1, 'z': 3, 'w': 0, (1, 2, 3): 4}      neuer Eintrag mit Tupel (1,2,3) als Key
d.keys()                             # ['y', 'x', 'z', 'w', (1, 2, 3)]
list(d.keys()), list(d.values())     # (['y', 'x', 'z', 'w', (1, 2, 3)], [2, 1, 3, 0, 4])

Funktionen

Zeichencodes

def strcodes(inp):
  return map(ord,inp)

Listen

def zipLists(*inputList):
    return list(zip(*inputList))