İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python'da Stack

b0mb - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
İzmir
Yaş:
17
Mesajlar:
471
Konular:
64
Teşekkür (Etti):
143
Teşekkür (Aldı):
221
Ticaret:
(0) %
04-11-2017 22:52
#1
Python'da Stack
Merhabalar,

Stack'in ne olduğunu merak ediyorsanız, ALcatraz' hocamın açtığı konuyu inceleyebilirsiniz.

Kod:
#!/usr/bin/env python2
#-*- coding: utf-8 -*-
#
#

"https://gist.github.com/laszlokuehl/ce69f6abc3e4e2f1e94f2adf2196bee0"

__author__ = '@laszlokuehl'

class Stack:
    def __init__(self, maxSize):
        self.maxSize = int(maxSize)
        self.__data = []

    def __str__(self):
        return str(self.__data)

    def __repr__(self):
        return self.__str__()

    def __error(self, msg):
        raise Exception(msg)

    def isEmpty(self):
        return len(self.__data) == 0

    def isFull(self):
        return len(self.__data) == self.maxSize

    def push(self, item):
        return self.__data.append(item) if self.isFull() != True else self.__error('Stack is full')

    def pop(self):
        return self.__data.pop(-1) if self.isEmpty() != True else self.__error('Stack is empty')

    def peek(self):
        return self.__data[-1] if self.isEmpty() != True else self.__error('Stack is empty')

    def search(self, item):
        return self.__data.index(item) if self.isEmpty() != True else self.__error('Stack is empty')
Aşağıda kullanımı bulunuyor.

Kod:
>>> 
>>> stack = Stack(20)
>>> 
>>> stack.isEmpty()
True
>>> 
>>> [stack.push(x) for x in range(20)]
[None] * 20
>>> 
>>> stack.isEmpty()
False
>>> 
>>> stack.isFull()
True
>>> 
>>> stack.peek()
19
>>> 
>>> stack.search(8)
8
>>> 
>>> [stack.pop() for x in range(20)]
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> 
>>> stack.push('test')
>>> stack.push('test2')
>>> stack.push('test3')
>>> 
>>> stack.search('test')
0
>>> 
>>> stack.search('test3')
2
>>>
SynFl00der - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2016
Nereden:
Kocaeli
Yaş:
18
Mesajlar:
172
Konular:
16
Teşekkür (Etti):
37
Teşekkür (Aldı):
43
Ticaret:
(0) %
04-11-2017 23:11
#2
push ellerinesaglik
mov b0mb esp
--------------------- push ebp
mov ebp, esp
call synflooder.736E
mov esp, ebp
pop ebp
ret
KurokoTetsuya Teşekkür etti.
KurokoTetsuya - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2015
Nereden:
SGA
Yaş:
20
Mesajlar:
5.058
Konular:
281
Teşekkür (Etti):
2328
Teşekkür (Aldı):
1551
Ticaret:
(0) %
04-11-2017 23:23
#3
Eline sağlık qnq, şu yorum dursun burda bir ara okuyacağım bunu.
--------------------- Zira bir Adana adliyesi gibi yoğunum bro
Ceys - ait Kullanıcı Resmi (Avatar)
Süper Moderatör
Üyelik tarihi:
04/2016
Mesajlar:
7.026
Konular:
690
Teşekkür (Etti):
144
Teşekkür (Aldı):
3106
Ticaret:
(0) %
04-11-2017 23:38
#4
Eline sağlık
Mantığınıda resimle anlatsaydın iyi olurdu ama zaten konu eklemişsin aynı mantık
King Kong - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Mesajlar:
2.399
Konular:
153
Teşekkür (Etti):
158
Teşekkür (Aldı):
425
Ticaret:
(0) %
05-11-2017 10:25
#5
Ah Vikingim Yaşıyomusun Sen ?

Ateşli Sohbetler İçin PM At Ellerine Sağlık Bu Arada
ByBela1 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2012
Nereden:
THT
Mesajlar:
1.419
Konular:
155
Teşekkür (Etti):
100
Teşekkür (Aldı):
187
Ticaret:
(0) %
05-11-2017 10:50
#6
Ellerine sağlık
---------------------
Benim Sadık Yarim Kara Topraktır
GrowHacker - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
08/2017
Nereden:
İstanbul
Yaş:
19
Mesajlar:
1.534
Konular:
13
Teşekkür (Etti):
26
Teşekkür (Aldı):
196
Ticaret:
(0) %
05-11-2017 11:14
#7
Eline Sağlık
Zeref - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2014
Nereden:
el psy congr
Yaş:
22
Mesajlar:
1.962
Konular:
80
Teşekkür (Etti):
196
Teşekkür (Aldı):
319
Ticaret:
(0) %
05-11-2017 11:16
#8
Bu sınıf performanslı olur mu ki zaten liste kullanarak tanımlanır tek yaptığı listeye stackoverflow özetlerini atamak.
--------------------- asdasdasdasrtewter
b0mb - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
İzmir
Yaş:
17
Mesajlar:
471
Konular:
64
Teşekkür (Etti):
143
Teşekkür (Aldı):
221
Ticaret:
(0) %
05-11-2017 12:28
#9
Alıntı:
Zeref´isimli üyeden Alıntı Mesajı göster
Bu sınıf performanslı olur mu ki zaten liste kullanarak tanımlanır tek yaptığı listeye stackoverflow özetlerini atamak.
Normal listeye ekleme yapmaktan farkı, fazladan bir if bulundurmak
Ayrıca, bir liste objesinde bulunan "__getitem__" fonksiyonunu bulundurmuyor, bu yüzden direk erişim yok, anca "obj._Stack__data[index]" diye erişebiliyoruz.

Bu arada, yukarıdaki örneği şöyle de anlatabiliriz,

Kod:
>>> _geri = Stack(20)
>>> _ileri = Stack(20)
>>> 
>>> def geri():
...     _ileri.push(_geri.pop())
...     
>>> 
>>> def ileri():
...     _geri.push(_ileri.pop())
...     
>>> 
>>> _geri.push('google.com')
>>> _geri.push('github.com')
>>> _geri.push('github.com/laszlokuehl')
>>> 
>>> geri()
>>> 
>>> _ileri
['github.com/laszlokuehl']
>>> 
>>> geri()
>>> 
>>> geri()
>>> 
>>> _ileri
['github.com/laszlokuehl', 'github.com', 'google.com']
>>> 
>>> ileri()
>>> ileri()
>>> ileri()
>>> 
>>> _geri
['google.com', 'github.com', 'github.com/laszlokuehl']
>>> 
>>> _ileri
[]
>>>
Konu SeNZeRo tarafından (18-11-2017 13:58 Saat 13:58 ) değiştirilmiştir.
BufGix - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.023
Konular:
74
Teşekkür (Etti):
314
Teşekkür (Aldı):
446
Ticaret:
(0) %
05-11-2017 18:53
#10
Ohh viking beyler de buradaymis
---------------------
~Cahile gelmez benden hayır

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı