Python - sbírka hezkých konstrukcí

Z Varhoo
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založena nová stránka: Funkce pro spočítání sumy list = range(1,10) reduce((lambda x,y:x+y) ,list) >> 45 Funkce filtru list = range(1,10) [x for x in list if x >5] [6, 7, 8, 9] Funk…)
 
 
(Není zobrazeno 5 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
Funkce pro spočítání sumy
+
==Sekvence v Pythonu==
  +
  +
'''Funkce pro spočítání sumy'''
   
 
list = range(1,10)
 
list = range(1,10)
Řádka 5: Řádka 5:
 
>> 45
 
>> 45
   
Funkce filtru
+
Pak lze snadno vytvořit funkci pro výpočet průměru
  +
  +
list = range(1,10)
  +
average = lambda list:reduce((lambda x,y:x+y) ,list) / float(len(list))
  +
>> 5.0
  +
  +
A aby to nebylo málo, obdobným způsobem spočítáme průměr souřadnic v 2D prostoru
  +
  +
avarage2d = lambda list: [i/float(len(list)) for i in reduce((lambda x,y:[x[0]+y[0],x[1]+y[1]]) ,list)]
  +
avarage2d([[1,2],[2,3]])
  +
>> [1.5, 2.5]
  +
  +
  +
'''Funkce filtru'''
   
 
list = range(1,10)
 
list = range(1,10)
 
[x for x in list if x >5]
 
[x for x in list if x >5]
[6, 7, 8, 9]
+
>> [6, 7, 8, 9]
   
Funkce map
+
'''Funkce map'''
 
 
 
list = range(1,10)
 
list = range(1,10)
 
[2**x for x in list]
 
[2**x for x in list]
[2, 4, 8, 16, 32, 64, 128, 256, 512]
+
>> [2, 4, 8, 16, 32, 64, 128, 256, 512]
   
Popřípadě
+
Popřípadě využití lambda výrazu
 
list = range(1,10)
 
list = range(1,10)
 
f = lambda x: 2**x
 
f = lambda x: 2**x
 
[f(x) for x in list]
 
[f(x) for x in list]
[2, 4, 8, 16, 32, 64, 128, 256, 512]
+
>> [2, 4, 8, 16, 32, 64, 128, 256, 512]

Aktuální verze z 14. 6. 2011, 14:02

[editovat] Sekvence v Pythonu

Funkce pro spočítání sumy

list = range(1,10)
reduce((lambda x,y:x+y) ,list)
>> 45

Pak lze snadno vytvořit funkci pro výpočet průměru

list = range(1,10)
average = lambda list:reduce((lambda x,y:x+y) ,list) / float(len(list))
>> 5.0

A aby to nebylo málo, obdobným způsobem spočítáme průměr souřadnic v 2D prostoru

avarage2d = lambda list: [i/float(len(list)) for i in reduce((lambda x,y:[x[0]+y[0],x[1]+y[1]]) ,list)]
avarage2d([[1,2],[2,3]])
>> [1.5, 2.5]


Funkce filtru

list = range(1,10)
[x for x in list if x >5]
>> [6, 7, 8, 9]

Funkce map

list = range(1,10)
[2**x for x in list]
>> [2, 4, 8, 16, 32, 64, 128, 256, 512]

Popřípadě využití lambda výrazu

list = range(1,10)
f = lambda x: 2**x
[f(x) for x in list]
>> [2, 4, 8, 16, 32, 64, 128, 256, 512]