Python Listeleri

Python, "list" adında harika bir yerleşik liste türüne sahiptir. Liste sabit değerleri köşeli parantez [ ] içine yazılır. Listeler dizelere benzer şekilde çalışır. İlk öğe dizini 0'da olacak şekilde, verilere erişmek için len() işlevini ve köşeli parantezleri [ ] kullanın. (Resmi python.org listesi belgelerine göz atın.)

  colors = ['red', 'blue', 'green']
  print(colors[0])    ## red
  print(colors[2])    ## green
  print(len(colors))  ## 3

dize listesi 'kırmızı' 'mavi 'yeşil'

Listelerde = işaretiyle yapılan atamalar kopya oluşturmaz. Bunun yerine, iki değişkenin bellekteki tek bir listeye işaret etmesini sağlar.

  b = colors   ## Does not copy the list

hem renkler hem de b bir listeyi işaret eder

"Boş liste", boş bir parantez [ ] çiftidir. '+' işareti iki liste eklemeye çalışır. Dolayısıyla [1, 2] + [3, 4], [1, 2, 3, 4] sonucunu verir (bu tıpkı dizelerle + gibidir).

İÇİN ve İÇİNDE

Python'un *for* ve *in* yapıları son derece yararlıdır. Bunların ilk kullanımını listelerde göreceğiz. *for* yapısı (for var in list), bir listedeki (veya başka bir koleksiyondaki) her bir öğeye bakmanın kolay bir yoludur. Yineleme sırasında listeye ekleme veya listeden kaldırma işlemi yapmayın.

  squares = [1, 4, 9, 16]
  sum = 0
  for num in squares:
    sum += num
  print(sum)  ## 30

Listede ne tür bir şey olduğunu biliyorsanız "num", "name" veya "url" gibi bu bilgileri yakalayan döngüde bir değişken adı kullanın. Python kodunda türleri hatırlatacak başka bir söz dizimi olmadığından, değişken adlarınız olup bitenleri açık bir şekilde tutmanın temel yoludur. (Bu, biraz yanıltıcıdır. Python'u daha fazla kullanmaya başladıkça, işlev tanımlarınıza yazma bilgileri eklemenize olanak tanıyan tür ipuçları referansları görürsünüz. Python, programlarınızı çalıştırırken bu tür ipuçlarını kullanmaz. Bunlar, işlevlerinizin uyumlu bağımsız değişkenlerle çağrılıp çağrılmadığını doğrulamak amacıyla IDE'ler (entegre geliştirme ortamları) ve statik analiz araçları (ör. hata analizi araçları) gibi diğer programlar tarafından kullanılır.)

*içinde* yapısı kendi başına bir öğenin bir listede (veya başka bir koleksiyonda) görünüp görünmediğini test etmenin kolay bir yoludur. value in collection, değerin koleksiyonda olup olmadığını test eder ve Doğru/Yanlış değerini döndürür.

  list = ['larry', 'curly', 'moe']
  if 'curly' in list:
    print('yay') ## yay

For/in yapıları Python kodunda çok yaygın olarak kullanılır ve liste dışındaki veri türleri üzerinde çalışır. Bu nedenle söz dizimini aklınızda tutmanız gerekir. Başka dillerde, bir koleksiyonu manuel olarak yinelemeye başladığınız alışkanlıklar da olabilir. Python'da, "içinde/içinde" ifadesini kullanmanız gerekir.

Bir dize üzerinde çalışmak için için/içinde yöntemini de kullanabilirsiniz. Dize, kendi karakterlerinin bir listesi gibi davrandığından for ch in s: print(ch) bir dizedeki tüm karakterleri yazdırır.

Aralık

Aralık(n) işlevi, son sayıyı hariç tutarak 0, 1, ... n-1 sayılarını ve aralık(a, b) de a, a+1, ... b-1 değerini döndürür. For-loop ve range() işlevinin kombinasyonu, döngü için geleneksel bir sayısal değer oluşturmanıza olanak tanır:

  ## print the numbers from 0 through 99
  for i in range(100):
    print(i)

Performans açısından hassas durumlar için listenin tamamını oluşturma maliyetini ortadan kaldıran bir xrange() varyantı vardır (Python 3'te range() iyi performans davranışına sahiptir ve xrange() işlevini unutabilirsiniz).

Döngüde

Python'da standart bir zaman döngüsü de vardır. *break* ve *continue* ifadeleri C++ ve Java'da olduğu gibi çalışarak en içteki döngünün seyrini değiştirir. Yukarıda/içinde/içinde döngüleri, bir listedeki her öğenin yinelemesiyle ilgili yaygın durumu çözer. Ancak süre döngüsü, dizin sayıları üzerinde tam kontrol sahibi olmanızı sağlar. Bir listedeki her 3. öğeye erişen bir time döngüsünü burada görebilirsiniz:

  ## Access every 3rd element in a list
  i = 0
  while i < len(a):
    print(a[i])
    i = i + 3

Yöntemleri Listeleme

Yaygın olarak kullanılan diğer liste yöntemlerinden bazıları aşağıda verilmiştir.

  • list.append(elem) -- Listenin sonuna tek bir öğe ekler. Sık karşılaşılan hata: Yeni liste döndürülmüyor, yalnızca orijinal liste değiştiriliyor.
  • list.insert(index, elem) -- Öğeyi belirtilen dizine ekler ve öğeleri sağa kaydırır.
  • list.extend(list2), liste2'deki öğeleri listenin sonuna ekler. Bir listede + veya += kullanmak, expand() kullanımına benzer.
  • list.index(elem) -- Belirli bir öğe için listenin başından itibaren arama yapar ve öğenin dizinini döndürür. Öğe görünmezse bir ValueError hatası verir (ValueError olmadan kontrol etmek için "in" komutunu kullanın).
  • list.remove(elem) -- Belirli bir öğenin ilk örneğini arar ve kaldırır (mevcut değilse ValueError atar)
  • list.sort() -- listeyi yerinde sıralar (döndürmez). (Daha sonra gösterilen Sort() işlevi tercih edilir.)
  • list.reverse() -- listeyi eski haline getirir (döndürmez)
  • list.pop(index) -- Belirtilen dizindeki öğeyi kaldırır ve döndürür. Endeks atlanırsa en sağdaki öğeyi döndürür (kabaca include() değerinin tersidir).

Bunların bir liste nesnesindeki *yöntemler* olduğuna dikkat edin. len() ise listeyi (veya dizeyi ya da herhangi bir şeyi) bağımsız değişken olarak alan bir işlevdir.

  list = ['larry', 'curly', 'moe']
  list.append('shemp')         ## append elem at end
  list.insert(0, 'xxx')        ## insert elem at index 0
  list.extend(['yyy', 'zzz'])  ## add list of elems at end
  print(list)  ## ['xxx', 'larry', 'curly', 'moe', 'shemp', 'yyy', 'zzz']
  print(list.index('curly'))    ## 2

  list.remove('curly')         ## search and remove that element
  list.pop(1)                  ## removes and returns 'larry'
  print(list)  ## ['xxx', 'moe', 'shemp', 'yyy', 'zzz']

Genel hata: Yukarıdaki yöntemlerin değiştirilen listeyi *döndürmediğini*, yalnızca orijinal listeyi değiştirdiğini unutmayın.

  list = [1, 2, 3]
  print(list.append(4))   ## NO, does not work, append() returns None
  ## Correct pattern:
  list.append(4)
  print(list)  ## [1, 2, 3, 4]

Liste Oluşturma

Yaygın olarak kullanılan yöntemlerden biri, bir listeyi boş liste [] olarak başlatmak, ardından buna öğe eklemek için sonu() veya expand() kullanmaktır:

  list = []          ## Start as the empty list
  list.append('a')   ## Use append() to add elements
  list.append('b')

Dilimleri Listeleme

Dilimler, dizeler gibi listeler üzerinde çalışır ve listenin alt bölümlerini değiştirmek için de kullanılabilir.

  list = ['a', 'b', 'c', 'd']
  print(list[1:-1])   ## ['b', 'c']
  list[0:2] = 'z'    ## replace ['a', 'b'] with ['z']
  print(list)         ## ['z', 'c', 'd']

Alıştırma: list1.py

Bu bölümdeki materyalle ilgili alıştırma yapmak için list1.py içinde, sıralamanın kullanılmadığı problemleri deneyin (Temel Alıştırmalar'da).