Если вы начинающий программист, вам будет полезно взглянуть и на эти концепции, они пригодятся вам в будущем программисту:
map
, lambda
и generators
.
- Вы можете определить простые функции, используя лямбда-функции.
As:
in_circle = lambda (x, y): True if Math.sqrt( Math.pow(x,2) + Math.pow(y,2) ) < 1 else False
# assuming circle has center 0, 0 and radius 1
2.и затем сопоставьте функцию со списком точек:
map( in_circle, your_list)
Обратите внимание, что в лямбде синтаксис (x, y) состоит в том, что вы передаете кортеж в качестве одного аргумента, и ваш список формируется следующим образом:
your_list = [(0,1),(0, 0.5), (0.3, 0.4) ...]
3.Вместо списка вы также можете использовать генератор, структура, очень удобная в итерациях, если вам не нужно снова использовать ваш список. Синтаксис
аналогичен (обратите внимание на скобки! (VS [)
your_point = [ (random.random(), random.random()) for i in range(n) ]
# list comprehension
your_point = ( (random.random(), random.random()) for i in range(n) )
# generator
4. Таким образом, вы можете сгенерировать список из N логических значений, таких как:
n = 10000
your_point = ( (random.random(), random.random()) for i in range(n) )
bool_list = map( in_circle, your_list)
Чтобы узнать о разнице между lamdba и обычными функциями, см. Также: what isразница для Python между лямбда-выражением и обычной функцией?
Для вашего интереса к пониманию списков генераторов VS: Выражения генераторов и понимание списков