diff --git a/10-lambda/jmena.py b/10-lambda/jmena.py
new file mode 100644
index 0000000000000000000000000000000000000000..4c6943ef9bc21c50e70ffc0603dd20025b64d572
--- /dev/null
+++ b/10-lambda/jmena.py
@@ -0,0 +1,15 @@
+# Seřadí primárně podle příjmení, sekundárně podle jména
+def serad(jmena):
+
+    def klic(jp):
+        jmeno, prijmeni = jp.split()
+        return prijmeni, jmeno
+
+    return sorted(jmena, key=klic)
+
+# Jiné řešení
+def serad2(jmena):
+    return sorted(jmena, key=lambda jp: jp.split()[::-1])
+
+jmena = ["Vodník Česílko", "Jelen Větrník", "Loupežník Rumcajz", "Kapr Kulda"]
+print(serad(jmena))
diff --git a/10-lambda/redukce.py b/10-lambda/redukce.py
new file mode 100644
index 0000000000000000000000000000000000000000..45e2fdb95df38d6163d6467701834a77b803da1a
--- /dev/null
+++ b/10-lambda/redukce.py
@@ -0,0 +1,28 @@
+def red(s, f):
+    x = s[0]
+    for i in range(1, len(s)):
+        x = f(x, s[i])
+    return x
+
+def prvni_nenulovy(s):
+
+    def f(x, y):
+        if x != 0:
+            return x
+        else:
+            return y
+
+    return red(s, f)
+
+# Zde předpokládáme, že seznam neobsahuje None
+# (dalo by se to obejít tak, že bychom místo None použili jakýkoliv
+# nově vytvořený objekt, třeba prázdný seznam)
+def vsechny_stejne(s):
+
+    def g(x, y):
+        if x is None or x != y:
+            return None
+        else:
+            return x
+
+    return red(s, g) is not None