Jump to content
  • entries
    33
  • comments
    0
  • views
    1,227

Referans Diziler


Doğuhan ELMA

46 views

Referans dizileri, bir dizi yapısını kullanarak birden çok öğeyi saklar. Ancak, bu durumda, dizi öğelerin kendisini değil, öğelere olan referansları saklar. Bu, değişken büyüklükte ve / veya farklı türlerde öğeleri saklama esnekliğini sağlar.

1.png

Python'daki listeler tipik bir referans dizisi örneğidir. Bir Python listesi, öğelerin değil, hafızadaki öğelere olan referansların dizisidir. Bu, listelerin her türden öğeyi saklamasını ve boyutlarının dinamik olarak değişmesini sağlar. Örneğin, aşağıdaki liste bir referans dizisidir:

my_list = [1, "hello", 3.14, [1, 2, 3], {"name": "John Doe"}]

Bu listede, her öğe farklı bir türdedir (tam sayı, string, float, başka bir liste ve bir sözlük) ve her biri hafızada farklı bir yerde saklanır. Liste, bu öğelerin hafızadaki yerlerine dair referansları saklar.

Referans dizilerinin bir özelliği, liste içindeki bir öğeye yapılan değişikliklerin, orijinal öğeyi de etkilemesidir. Bu, öğenin değil, öğenin referansının saklandığı anlamına gelir. Bu yüzden, listedeki bir öğeye bir değişiklik yaptığınızda, bu değişiklik orijinal öğeye yansır.

Bir Python listesindeki bir öğenin bir alt listeye referans olması durumunu ele alalım:

sub_list = [1, 2, 3]
my_list = ["a", "b", sub_list]

Eğer sub_list üzerinde bir değişiklik yaparsanız, bu my_list içindeki ilgili öğeyi de etkiler:

sub_list.append(4)
print(my_list)  # Output: ["a", "b", [1, 2, 3, 4]]

Görüldüğü gibi, sub_list'e eklenen 4, my_list'teki ilgili öğeyi de etkiledi çünkü my_list'teki bu öğe, sub_list'e olan bir referanstı.

Listelerin ve demetlerin referans yapıları olması, bu sınıfların semantiği açısından önemlidir. Tek bir liste örneği, listenin öğeleri olarak aynı nesneye birden çok başvuru içerebilir ve tek bir nesnenin iki veya daha fazla listenin bir öğesi olması mümkündür, çünkü bu listeler yalnızca o nesneye yapılan başvuruları depolar. Örnek olarak, bir listenin bir dilimini hesapladığınızda, sonuç yeni bir liste örneğidir, ancak bu yeni liste, gösterildiği gibi orijinal listedeki aynı öğelere referanslara sahiptir.

1.png

Listenin öğeleri değişmez nesneler olduğunda, tamsayı örneklerinde olduğu gibi, iki listenin öğeleri paylaşması o kadar önemli değildir, çünkü listelerden hiçbiri paylaşılan nesnede bir değişikliğe neden olamaz. Örneğin, temp[2] = 15 komutu bu yapılandırmadan yürütüldüyse, bu mevcut tamsayı nesnesini değiştirmez; farklı bir nesneye başvurmak için geçici(temp) listenin 2. hücresindeki başvuruyu değiştirir.

1.png

Bu ifade, boyutu 8 olan bir liste oluşturur ve tüm elemanlarına 0 değerini atar.

Python'da, * işareti liste çoğaltma operatörü olarak kullanılır. Bu durumda, [0] * 8 ifadesi, [0, 0, 0, 0, 0, 0, 0, 0] listesini oluşturur. Her bir elemanı 0 olan 8 elemanlı bir liste oluşturur.

Bu şekilde bir liste oluşturmak genellikle, belirli bir boyutta bir liste başlatmanız ve tüm elemanlarını belirli bir değere ayarlamanız gerektiğinde kullanılır.

Örneğin, bir sayma işlemi yapmak için 8 haneli bir sayaç oluşturmak istiyorsanız, counters = [0] * 8 ifadesini kullanabilirsiniz. Bu, tüm sayacın hanelerini 0 ile başlatır. Daha sonra, belirli bir hanedeki değeri artırmak için indeksleme kullanabilirsiniz. Örneğin, counters[2] += 1 ifadesi, üçüncü hane olan counters[2]'nin değerini 1 artırır.

1.png

Python'daki extend metodunu bir liste üzerinde kullanabilirsiniz. Bu metot, bir listenin sonuna başka bir listenin tüm elemanlarını ekler.

Aşağıda extend metodunun kullanımına bir örnek gösterilmektedir:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # Çıktı: [1, 2, 3, 4, 5, 6]

Bu örnekte, extend metodu list1'in sonuna list2'nin tüm elemanlarını ekler. Bu, list1'i değiştirir ve artık list2'nin elemanlarını da içerir.

extend metodu genellikle iki listeyi birleştirmek için kullanılır. extend metodunun aksine append metodu, listenin sonuna yeni bir öğe ekler. Eğer append metodu bir liste ile kullanılırsa, bu liste yeni öğe olarak eklenir, böylece iç içe bir liste (nested list) oluşur.

1.png

 

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...