Python Listeleri

Python, "list" adlı harika bir yerleşik liste türüne sahiptir. Liste değişmez değerleri köşeli parantez [ ] içinde yazılır. Listeler dizelere benzer şekilde çalışır. İlk öğe dizini 0'da olmak üzere verilere erişmek için len() işlevini ve köşeli parantezleri [ ] kullanın. (Resmi python.org liste dokümanlarına bakın.)

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

'kırmızı' dizelerinin listesi "mavi "yeşil"

= on listelerinde bulunan ödevde kopya oluşturulmaz. Bunun yerine atama, iki değişkenin bellekteki bir listeye işaret etmesini sağlar.

  b = colors   ## Does not copy the list

hem renk hem de b tuşu tek listeye işaret ediyor

"Boş liste" sadece içi boş köşeli parantez [ ] olabilir. "+" , iki liste eklemeye çalışır. Bu nedenle [1, 2] + [3, 4], [1, 2, 3, 4] sonucunu verir (bu, dizelerle birlikte + gibidir).

İÇİNDE ve İÇİ

Python'un *for* ve *in* yapıları son derece kullanışlı. 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 öğeyi incelemenin kolay bir yoludur. Yineleme sırasında listeye ekleme veya çıkarma 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 şeyin olduğunu biliyorsanız döngüde "num", "name" veya "url" gibi bilgileri yakalayan 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 süreci takip etmenizin önemli bir yoludur. (Bu biraz yanıltıcıdır. Pithon'a daha fazla maruz kaldıkça, bununla ilgili referanslar Yazma işlemi eklemenize olanak tanıyan tür ipuçları fonksiyon tanımlarınıza ekleyin. Python, çalışırken bu tür ipuçlarını kullanmaz nasıl sağlayabileceğini de öğreneceksiniz. IDE'ler (entegre geliştirme ortamları) ve diğer programlar tarafından fonksiyonlarınızın çağrıldığını doğrulamak için linter/tür denetleyici gibi statik analiz araçları uyumlu bağımsız değişkenlerle oturum açın.)

*in* yapısı, bir öğenin 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 bir şekilde kullanılır ve liste dışındaki veri türleri üzerinde çalışır. Bu nedenle, söz dizimini unutmamanız yeterlidir. Başka dillerdeki bazı alışkanlıklarınız, bir koleksiyon üzerinde manuel olarak iterasyon yapmaya başlar ve Python'da yalnızca bu diller için kullanılır.

Bir dize üzerinde çalışmak için for/in komutunu da kullanabilirsiniz. Dize, karakter listesi işlevi görür. Bu nedenle for ch in s: print(ch), bir dizedeki tüm karakterleri yazdırır.

Aralık

aralık(n) işlevi 0, 1, ... n-1 sayılarını verir ve aralık(a; b), son sayıyı içermeyecek şekilde a, a+1, ... b-1 değerini döndürür. For-loop ile range() işlevinin birlikte kullanılması, 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 tüm listeyi oluşturma maliyetinden kaçınan bir xrange() varyantı vardır (Python 3'te, range() iyi performans davranışına sahip olur ve xrange() fonksiyonunu unutabilirsiniz).

Döngü Halinde

Python'da standart bir süre 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ıdaki "içinde/içinde" döngüleri, bir listedeki her öğe üzerinde yineleme yapılacak şekilde gerçekleştirilen genel durumu çözer ancak "ise" döngüsü size dizin numaraları üzerinde tam kontrol sağlar. Bir listedeki her 3. öğeye erişen bir süre 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

Listeleme Yöntemleri

Yaygın olarak kullanılan diğer liste yöntemlerinden bazıları şunlardır:

  • list.append(elem) -- Listenin sonuna tek bir öğe ekler. Genel hata: Yeni listeyi döndürmez, yalnızca orijinali değiştirir.
  • list.insert(index, elem) -- Öğeyi belirtilen dizine ekler, öğeler sağa kaydırır.
  • list.extend(list2), list2'deki öğeleri listenin sonuna ekler. Bir listede + veya += kullanmak,expand() işlevini kullanmaya benzer.
  • list.index(elem) -- Belirtilen öğeyi listenin başından itibaren arar ve dizinini döndürür. Öğe görünmezse ValueError hatasını verir (ValueError olmadan kontrol etmek için "in" kullanın).
  • list.remove(elem) -- Belirli bir öğenin ilk örneğini arar ve kaldırır (mevcut değilse ValueError hatasını verir)
  • list.sort() -- listeyi yerinde sıralar (döndürmez). (Daha sonra gösterilen sellers() işlevi tercih edilir.)
  • list.reverse() -- Listeyi yerinde tersine çevirir (döndürmez)
  • list.pop(index) -- Belirtilen dizindeki öğeyi kaldırır ve döndürür. Dizin atlanırsa en sağdaki öğeyi döndürür (kabacainsert() yönteminin tam tersi).

Bunların liste nesnesindeki *yöntemler* olduğuna, len() ise listeyi (veya dizeyi ya da başka 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ştirdiklerini 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 bir kalıp, bir listeyi boş liste [] olarak başlatmak, ardından listeye öğe eklemek için Insert() veya uzatma() kullanmaktır:

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

Dilimleri Listeleme

Dilimler, listelerde de dizelerde olduğu gibi ç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 materyallerle ilgili alıştırma yapmak için list1.py dosyasında sıralama kullanmayan problemleri deneyin (Temel Alıştırmalar'daki).