<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Faruk Toptaş &#187; lambda function</title>
	<atom:link href="http://blog.toptas.me/tag/lambda-function/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.toptas.me</link>
	<description>bir ve sıfırlar aşkına</description>
	<lastBuildDate>Wed, 11 Apr 2012 20:36:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Python lambda Fonksiyonu</title>
		<link>http://blog.toptas.me/python-lambda-fonksiyonu/</link>
		<comments>http://blog.toptas.me/python-lambda-fonksiyonu/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 19:21:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[lambda fonksiyonu]]></category>
		<category><![CDATA[lambda function]]></category>
		<category><![CDATA[python dersleri]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=157</guid>
		<description><![CDATA[Python ile programlama yapmaya başladıktan sonra, bana pythondan daha eğlenceli gelen bir programlama dili olmadığını düşünüyorum. Pythonun en önemli özelliklerinden biri az kodla çok şey anlatabilme özelliğinin olmasıdır. Bunun bir]]></description>
			<content:encoded><![CDATA[<p>Python ile programlama yapmaya başladıktan sonra, bana pythondan daha eğlenceli gelen bir programlama dili olmadığını düşünüyorum. Pythonun en önemli özelliklerinden biri az kodla çok şey anlatabilme özelliğinin olmasıdır. Bunun bir örneği ise <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonudur.</p>
<p><strong><span style="color:#008000;">lambda</span> Fonksiyonu Ne İşe Yarar?</strong></p>
<p>Fonksiyon yazmak kodlarımızın daha anlaşılır, kısa ve temiz olmasını sağlar. Aynı kodları tekrar tekrar kullanmamamız için yazarız. Fakat bazen ufak tefek işler yapmak için defalarca fonksiyon yazarız. Fonksiyonları kod tekrarı yapmamak için kullanıyorduk hani. İşte tam burada lambda fonksiyonu devreye giriyor. Tek değişkenli bir fonksiyon kullanmamız gerekiyorsa bunu işlem içinde tek satırda ekstra kod veya satır eklemeden olayı halletmemizi sağlar. Mesela elimizde bir dizi var ve dizinin her elemanını bir sayıyla çarpıp başka bir dizi oluşturmamız lazım. Bunu yapmak için bir <span style="color:#008000;"><strong>for</strong></span> döngüsü kullanabiliriz fakat bu fazladan bir değişken kullanmamıza neden olur ve enaz iki satır olur. Hele bi de bu dizinin içindeki bazı elemanları bir eleme yaparak alıyorsak bu da bize bir <span style="color:#008000;"><strong>if</strong></span> kullanmamıza malolur. lambda fonksiyonu genelde <span style="color:#ff6600;"><strong>map(), filter(), reduce()</strong></span> gibi fonksiyonlarla birlikte kullanılır. Lafı fazla uzatmadan örneklere geçelim.</p>
<p><span id="more-157"></span></p>
<p>Bir f fonksiyonu yazalım çıkış değeri giriş değerinin 3 katı olsun.</p>
<pre name="code" class="python">
&gt;&gt;&gt;def f(x):
...    return x*3
...
&gt;&gt;&gt;f(2)
6
&gt;&gt;&gt;
</pre>
<p><span style="color:#ff6600;">f(x)</span> fonksiyonunu tanımladık ve<span style="color:#ff6600;"> f(2)=6 </span>oldu. Şimdi aynı işi lambda ile yapacağız</p>
<pre name="code" class="python">
&gt;&gt;&gt;g=lambda x:x*3
&gt;&gt;&gt;g(2)
6
&gt;&gt;&gt;
</pre>
<p>veya</p>
<pre name="code" class="python">
&gt;&gt;&gt;(lambda x:x*3)(2)
6
&gt;&gt;&gt;
</pre>
<p>Şimdi biraz daha karışık bir örnek yapalım yani lambda yı <strong><span style="color:#ff6600;">filter() </span></strong>fonksiyonu ile kullanma:</p>
<pre name="code" class="python">&gt;&gt;&gt;aylar=["Ocak","Subat","Mart","Nisan","Mayis","Haziran","Temmuz","Agustos","Eylul","Ekim","Kasim","Aralik"]
&gt;&gt;&gt;print filter(lambda x:x[0]=="M",aylar)
['Mart', 'Mayis']
&gt;&gt;&gt;
</pre>
<p>yazdığımız fonksiyon bize M harfi ile başlayan ayları çıkış olarak verdi. lambda fonksiyonunu filter ile kullandığımızda dizinin içinde belli bir koşula uyan (buradaki koşulumuz M harfi ile başlaması) elemanları çekme.</p>
<p>lambda yı<span style="color:#ff6600;"><strong> map()</strong></span> fonksiyonu ile kullanma:</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print map(lambda x:x**2,sayilar)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
&gt;&gt;&gt;
</pre>
<p>Burada elde ettiğimiz sonuç sayilar dizisindeki her elemanın karesidir. <span style="color:#ff6600;"><strong>map()</strong></span> fonksiyonuyla her elemana bir işlem uygularız.</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print reduce(lambda x,y:x+y,sayilar)
45
&gt;&gt;&gt;
</pre>
<p><strong><span style="color:#ff6600;">reduce()</span></strong> fonksiyonuyla tüm elemanları topladık.</p>
<pre name="code" class="python">
&gt;&gt;&gt;asal=range(2,50) #asal dizisi 2 den 50 ye kadar elemanı olan bir dizi
&gt;&gt;&gt;for i in range(2,8):
...    asal=filter(lambda x:x==i or x%i,asal)</span>
...
&gt;&gt;&gt;print asal
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
&gt;&gt;&gt;
</pre>
<p>Evet gördüğünüz gibi bir lambda fonksiyonuyla 2 ile 50 arasındaki asal sayıları bulduk. Kullandığımız formül &#8220;Sieve of Eratosthenes&#8221; formülü yani kalburdan geçirmek gibi bişey. İlk olarak 2 ile 50 arasındaki sayıları bir diziye yazdık. Ardından kullandığımız döngüde i sayısını 2&#8242;den 8&#8242;e artırdık. Dizideki her elemanı 2 koşula <strong>(x==i or x%i)</strong> bağlı kalması şartıyla dizinin içinde bıraktık. Yani bu 2 koşula uymayanlar döngünü bir sonraki adımında dizinin içinde olmayacak. Böylece döngü bittiğinde asal sayıları elde etmiş olduk.</p>
<pre name="code" class="python">
&gt;&gt;&gt;print map(lambda x:len(x),'suan disarda kar yagiyor'.split())
[4, 7, 3, 7]
&gt;&gt;&gt;
</pre>
<p>split() fonksiyonu ile stringimizi boşlukların olduğu yerlerden bölüyoruz yani örnek verecek olursak<span style="color:#ff6600;"> &#8216;py thon&#8217;.split() </span>yazdığımızda <span style="color:#ff6600;">['py', 'thon']</span> çıktısını alırız. &#8216;suan disarda kar yagiyor&#8217; stringini önce <span style="color:#ff6600;"><strong>split()</strong></span> fonksiyonu ile kelimelere ayırıyoruz sonrada lambda ile her kelimenin kaç harf olduğunu buluyoruz.</p>
<p>Bu örnekleri çoğaltabiliriz. Kısacası <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonu ekstradan bir fonksiyon veya döngü kullanmadan toplu işlem yapmammız içindir.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.toptas.me/python-lambda-fonksiyonu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

