# DEMET VE KÜMELER

# Tuple(Demet) nedir? Nasıl kullanılır?
# Tuple neredeyse listenin aynısıır. Küçük değişiklikleri vardır.
# Tuple [] yerine () kullanır.
demet = ("Sarı", "Kırmızı","Mavi","Yeşil","Siyah")
print(type(demet)) # <class 'tuple'>
# Demet öğe sayısını gösterme.
print(len(demet)) # 5
# Demet yazdırma.
print(demet) # ('Sarı', 'Kırmızı', 'Mavi', 'Yeşil', 'Siyah')
# for ile yazdırma.
for renk in demet:
    print(renk)
# Çıktı:
# Sarı
# Kırmızı
# Mavi
# Yeşil
# Siyah
# Liste ile Demet Farkı şu şekildedir.
# Demet'e nesne atama yapılamaz.
# demet[2] = "Al"
# Yukarıdaki gibi bir atama yapılamaz.
# Kısaca değiştir, ekle, çıkar vs.. yapılamaz.

#--------------------
# Set(Küme) Nedir? Nasıl Kullanılır
# Küme'nin sıradan farkı, her eleman sadece bir defa eklenir. Örneğiniki tane sarı olamaz.
# Kümelerde sıralama yoktur. Her çalıştırıldığında rasgele liste gelir.
kume = {"Sarı","Kırmızı","Yeşil","Mor"}
print(type(kume)) # <class 'set'>
print(len(kume)) # 4
print(kume) # {'Yeşil', 'Sarı', 'Kırmızı', 'Mor'}
for renk in kume:
    print(renk)
# Çıktı:
# Kırmızı
# Sarı
# Yeşil
# Mor
# Kümeye eleman ekleme ve silme.
print(kume) # {'Yeşil', 'Mor', 'Kırmızı', 'Sarı'}
kume.add("Pembe") # Ekleme
print(kume) # {'Mor', 'Yeşil', 'Pembe', 'Sarı', 'Kırmızı'}
kume.remove("Sarı") # Silme
print(kume) # {'Kırmızı', 'Yeşil', 'Mor', 'Pembe'}
kume.discard("Gri") # Remove ile aynı ama hata vermeden siler.
print(kume) # {'Pembe', 'Mor', 'Kırmızı', 'Yeşil'}

#--------------------
# Kümelerde Kesişim ve Birleşim.
kume1 = {"Sarı","Mavi","Yeşil","Kırmızı","Siyah"}
kume2 = {"Sarı","Mavi","Yeşil","Gri","Beyaz"}
# Kesişim yani ortak elemanları bulma.
print(kume1.intersection(kume2)) # {'Mavi', 'Sarı', 'Yeşil'}
print(kume2.intersection(kume1)) # {'Mavi', 'Sarı', 'Yeşil'}
# Birleşim yani toplamı. Bir defa ekler. Mesela sarı iki defa var ama bir defa ekledi.
print(kume1.union(kume2)) # {'Mavi', 'Yeşil', 'Gri', 'Sarı', 'Kırmızı', 'Siyah', 'Beyaz'}
# Farkı. Yani birinde olup ötekinde olmayanlar.
print(kume1.difference(kume2)) # {'Siyah', 'Kırmızı'}
print(kume2.symmetric_difference(kume1)) # {'Gri', 'Siyah', 'Kırmızı', 'Beyaz'}
# İn ile var olup olmadığını sorgulama.
print("Sarı" in kume1) # True
print("Turuncu" in kume2) #

# Boş küme,demet,liste oluşturma.
bosliste1 = []
bosliste2 = list()

bosdemet1 = ()
bosdemet2 = tuple()

boskume1 = set()
boskume2 = {} # Bu çalışmaz.
print((type(boskume2))) # <class 'dict'> (Sözlük yani küme değil.)

# Set içine aldığı her şeyi kümeye çevirir.
# ÖRNEKLER:
python = set("PYHTON")
print(python) # {'T', 'H', 'O', 'N', 'P', 'Y'}
python = set([1,2,5,3,9])
print(python)  # {1, 2, 3, 5, 9}
python = set((1,2,5,6,9))
print(python) # {1, 2, 5, 6, 9}