NBA_01_Funktionale_Programmierung

(c) 2019/2020 Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever

Lambda

In [1]:
def make_inkrementor(n):
    return lambda x: x+n

f = make_inkrementor(44)
In [2]:
f
Out[2]:
<function __main__.make_inkrementor.<locals>.<lambda>>
In [3]:
f(0)
Out[3]:
44
In [4]:
f(1)
Out[4]:
45
In [5]:
paare = [(1,'eins'),(2,'zwei'),(3,'drei'),(4,'vier')]
paare
Out[5]:
[(1, 'eins'), (2, 'zwei'), (3, 'drei'), (4, 'vier')]
In [6]:
paare.sort(key=lambda x: x[1])
paare
Out[6]:
[(3, 'drei'), (1, 'eins'), (4, 'vier'), (2, 'zwei')]

Builtin-Funktionen

map

In [ ]:
f(a,b,c)
A=[...]
B=[...]
C=[...]
map(f,A,B,C)->[f(A[0],B[0],C[0]),f(A[1],B[1],C[1]),...]
In [7]:
def upper(s):
    return s.upper()

list(map(upper, ['sentence','fragment']))
Out[7]:
['SENTENCE', 'FRAGMENT']
In [8]:
y=[upper(s) for s in ['sentence','fragment']]
In [9]:
y
Out[9]:
['SENTENCE', 'FRAGMENT']

enumerate

In [10]:
f = """Dies ist ein mehrzeiliger
text mit einer

Leerzeile dazwischen""".split("\n")

for i,line in enumerate(f):
    if line.strip() == '':
        print("Leerzeile in Zeile #{}".format(i))
Leerzeile in Zeile #2

sorted

In [11]:
import random
rand_list = random.sample(range(1000),8)
print(rand_list)
[182, 472, 611, 68, 720, 986, 948, 270]
In [12]:
x=sorted(rand_list)
x
Out[12]:
[68, 182, 270, 472, 611, 720, 948, 986]
In [13]:
y=sorted(rand_list,reverse=True)
y
Out[13]:
[986, 948, 720, 611, 472, 270, 182, 68]
In [14]:
z=sorted(rand_list,key=lambda x: x%17)
z
Out[14]:
[68, 986, 720, 182, 472, 948, 270, 611]
In [15]:
for i in rand_list:
    print(i,i%17)
182 12
472 13
611 16
68 0
720 6
986 0
948 13
270 15

zip

In [17]:
x=zip(['a','b','c'],[1,2,3],"cde")
list(x)
Out[17]:
[('a', 1, 'c'), ('b', 2, 'd'), ('c', 3, 'e')]
In [18]:
y=zip([1,2,3,4],"abc")
list(y)
Out[18]:
[(1, 'a'), (2, 'b'), (3, 'c')]