Veri depolama

Diyelim ki oyuncuların karmaşık ve dostça olmayan bir bilgisayar arayüzüne karşı yarıştığı "User Hostile" adlı bir bilgisayar oyunu geliştirdiniz. Şimdi bu oyunun beş yıllık periyotta aylık satışlarını takip eden bir program yazmanız gerekiyor. Ya da Hacker Hero Koleksiyon Kartlarının envanterini çıkarmanız gerektiğini varsayalım.
Çok yakında, bilgileri depolamak ve işlemek için basit temel veri türlerinden daha fazlasına ihtiyacınız olduğu sonucuna varacaksınız.
 

Listeler (diziler)

Büyük miktarda veri ile çalışmayı kolaylaştırmak için bir grup hücreye ortak bir ad verilir. Böyle bir hücre grubuna dizi denir.
 
Dizi – aynı türden, yan yana yerleştirilmiş ve ortak bir isme sahip bir grup hafıza hücresidir. Gruptaki her hücrenin benzersiz bir numarası vardır.

Dizilerle çalışırken üç görevi nasıl çözeceğinizi öğrenmeniz gerekir:
X dizi için gerekli boyutta bellek ayırın;
X istenen hücreye veri yaz;
X bir hücreden veri okuma.

 

Python'da Diziler

Python'da böyle bir dizi yoktur. Bunun yerine listeler, aynı türdeki (yalnızca aynı türden olmayan) bir grup nesneyi - list türündeki nesneleri - depolamak için kullanılır. Listeler ve diziler arasındaki fark, listenin dinamik bir yapı olması, bellek yönetimi işlemlerini düşünmeden (bu derleyici tarafından yapılır) programın yürütülmesi sırasında (silme, öğe ekleme) boyutu değiştirilebilen dinamik bir yapı olmasıdır.
Gelecekte, listelerle çalışmayı analiz ederken "dizi" kelimesini kullanacağız, çünkü çoğu zaman listeler tam olarak bir dizi rolünde kullanılır (aynı türden verileri depolarlar).
 
Bir dizi oluşturma
Bir dizi oluşturulduğunda, bellekte yer ayrılır (belirli sayıda hücre). 1) Diziler, yalnızca öğeleri numaralandırarak oluşturulabilir: A = [1, 4, 7, 12, 5] yazdır(tip(A)) Programın çıktısı
<sınıf 'listesi'>
Yani, bir dizi list (İngilizce liste'den çevrilmiştir) türünde bir nesnedir.

2) Diziler, tamsayılar veya gerçek sayılar, karakter dizileri  A = ["Vasya", "Petya", "Fedya"]

Dizilerle çalışmanın bazı yolları
3) Diziler "eklenebilir". A = [1, 5] + [25, 7]
4) Özdeş dizilerin toplamı, çarpma ile değiştirilebilir. Böylece, aynı değerlerle dolu bir dizi oluşturmak kolaydır, şöyle: A = [0]*10 # 10 elemanlı bir dizi oluşturdu ve onu sıfırlarla doldurdu
5) Bir dizi her zaman "bilir" senin bedenin  len() işlevi, bir dizinin boyutunu belirlemek için kullanılır. Genellikle dizinin boyutu ayrı bir değişkende saklanır, böylece program farklı bir dizi boyutuyla çalışacak şekilde kolayca değiştirilebilir.

Örnek
N = 10 # dizinin boyutunu N değişkeninde saklar A = [0] * N #, N boyutunda bir dizi oluştur print(len(A)) # dizinin boyutunu yazdır Bir dizinin boyutu klavyeden ayarlanabilir.

Dizi öğeleriyle çalışma

Dizilerin kullanışlılığının çoğu, öğelerine ayrı ayrı erişilebilmesi gerçeğinden gelir.
Bunu yapmanın yolu, elemanları numaralandırmak için bir dizin kullanmaktır.
 
Dizinbelirli bir dizi öğesine işaret eden bir değerdir.

Bir dizinin bir elemanına atıfta bulunmak için, dizinin adını ve ardından dizini köşeli parantez içinde belirtmelisiniz. Örneğin, dizin 1'deki dizi öğesine 100 değerini şu şekilde yazabilirsiniz: A[1] = 100.


Hatırlamak zorundasın!
PYTHON'DA NUMARA DİZİSİ SIFIRDAN BAŞLAR!
(Bu bir önkoşuldur - sıfırdan başlamalısınız. Bunu hatırlamak özellikle önemlidir.)
 
Örnek
x = (A[3] + 5) * A[1] # A[3] ve A[1] değerlerini oku A[0] = x + 6 # A[0]'a yeni değer yaz
Dizi öğeleriyle çalışmak için programı inceleyelim.
ben = 1
A = [0] * 5 # 5 elemanlı bir dizi oluştur
A[0] = 23 #, 5 dizi öğesinin her birine (0 ila 4 dizinleri)
A[1] = 12 # belirli bir değer yaz
A[2] = 7
A[3] = 43
A[4] = 51
A[2] = A[i] + 2*A[i-1] + A[2*i] # indeksi 2 olan elemanın değerini ifadenin sonucuna değiştir
                                # i=1 olduğundan, i değişkeninin değerini elde ettiğimiz ifadede yerine koyarsak
                                # aşağıdaki ifade A[2] = A[1] + 2*A[0] + A[2];
yazdır(A[2] + A[4])


Çalışma sonucunda bu program 116'ya eşit indeks 2 ve indeks 4'e sahip dizinin elemanlarının toplamının değeri ekranda görünecektir. Örnekten de görebileceğiniz gibi dizinin herhangi bir elemanına ulaşabiliyoruz. . Ayrıca gerekli eleman sayısını çeşitli formüller kullanarak hesaplayın (örneğin, A[i-1] veya A[2*i] programında olduğu gibi). Bu durumlarda, elemanların indeksleri hesaplanacak ve i'nin değerine bağlı olacaktır.

Python'da diziler için negatif indeks değerleri kullanabilir, dizinin sonundan sayabilirsiniz. Örneğin: A[-1] - dizinin son elemanı A[-2] - sondan bir önceki öğe vb.

Programı analiz edelim. N=5 A = [0] * N  x=1 yazdır(A[x - 3])   # A[-2] öğesine erişim print(A[x - 3 + len(A)]) # erişim elemanı A[3]                       # bu,  A[-2] ile aynı öğedir A[x + 4] = A[x] + A[2 * (x + 1)]  # ifadelerde ve hesaplamalarda x yerine koyulduktan sonra                            # sonraki satırı al A[5] = A[1] + A[4]                           # A[5] böyle bir öğe yok                           # hata - sınırların dışında dizi Dizi 5 öğeyle tanımlandığından, öğeler -5'den 4'e kadar numaralandırılacaktır. 6. satırdaki programın var olmayan bir öğeye gönderme yaptığını görüyoruz: A[5].
Programın dizinin sınırlarını aştığı ortaya çıktı.
 

Bu gibi durumlarda, program genellikle çalışma zamanı hatası vererek çöker.

Dizi öğeleri üzerinde yineleme

Dizilerle çalışırken genellikle dizinin tüm öğeleriyle aynı anda çalışmanız gerekir.
 
Öğeler arasında geçiş yapın: dizinin tüm öğeleri arasında geçiş yapın ve gerekirse bazı işlemler gerçekleştirin

Bunun için, genellikle 0 ile N-1 arasında değişen değişkenli bir döngü kullanılır; burada N dizi sayısıdır öğeler.
N altında dizinin mevcut boyutunu dikkate alacağız, yani  N = len(A). ... aralık(N) içindeki i için: # burada A[i] ile çalışıyoruz ... Belirtilen döngüde i değişkeni 0, 1, 2, ..., N-1 değerlerini alacaktır.  Böylece, döngünün her adımında, dizinin i numaralı belirli bir öğesine erişiriz.
Bu nedenle A[i] dizisinin bir elemanı ile yapılması gerekenleri anlatmak ve bu işlemleri böyle bir döngü içerisine yerleştirmek yeterlidir.

Diziyi ilk N doğal sayılarla dolduran, yani programın sonunda dizinin elemanları eşit hale gelen bir program yazalım. A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = H Kalıbı görmek kolaydır: bir dizi öğesinin değeri, öğenin dizininden 1 daha büyük olmalıdır.

Döngü şöyle görünecek aralık(N) içindeki i için: A[i] = ben + 1

Liste oluşturucular

Python dili, birçok sorunu özlü ve güvenilir bir şekilde çözmenize olanak tanır. Bir diziyi doldurmanın ana olasılıklarını listeleyelim. 1) Bir dizi oluşturmak ve doldurmak şu şekilde yazılabilir: A = [aralık(N)'deki i için i] # N = 5 ile A dizisi = [0,1,2,3,4] A = [i*i for i in range(N)] # N = 5 ile A dizisi = [0,1,4,9,16] for i in range(N) - 0 ile N-1 arasındaki tüm i değerleri arasında döngü yapar.

Dizinin bir sonraki elemanı, for kelimesinden önce gelen değeri içerecektir, ilk durumda i, ikinci durumda - i*i.

Aşağıdaki gösterimi kullanarak aynı sonucu elde ederiz:
A = list(range(N)) # ile N = 5, dizi A = [0,1,2,3,4]

2) Diziye tüm değerleri değil, yalnızca belirli bir koşulu sağlayanları yazabilirsiniz.
 
Örnek
Diziyi 0 ila 9 aralığındaki tüm çift sayılarla doldurma. A = [aralıktaki i için i(10) eğer ben % 2 == 0] print(*A) # dizi A = [0,2,4,6,8] Bu durumda, dizinin uzunluğunun 10'dan küçük olacağını anlamanız gerekir. 

3) Klavyeden bir diziyi her satırda bir tane olacak şekilde doldurmak iki şekilde yapılabilir.
 

4) Klavyeden bir diziyi aynı satırda bulunan öğelerle doldurmak biraz daha karmaşıktır. Dizeyi okumanız, öğelere ayırmanız ve ardından her öğeyi bir tamsayıya dönüştürmeniz gerekir. s = input().split()  A = [s cinsinden i için int(i)]  ya da öylesine A = list(map(int, input().split())) # yerleşik işlev listesi()   # diziyi dönüştürür   # değiştirilebilir listeye

Dizi çıkışı

Bir diziyi ekranda farklı şekillerde de görüntüleyebilirsiniz.
 
N=5 A = [0]*5 aralık(N) içindeki i için: A[i] = int(input())
A = [aralık(N) içindeki i için int(input())]
# döngü her tekrarlandığında,
# giriş dizisi dönüştürülür
# bir tamsayıya (int kullanarak)
# ve bu sayı diziye eklenir

Birçok programlama dilinde kullanılan standart yol. Böyle bir döngü daha kısa yazılabilir. Döngünün her adımındaki х değeri, dizinin bir sonraki elemanı ile doldurulur. Python'da böyle yazabilirsiniz.
aralıkta i için(len(A)): print(A[i], end=" ") A'da x için: print(x, end=" ")
yazdır(*A)
İsmin önüne * işareti koyun
dizinin # anlamı şu anlama gelir:
# dönüştürülmesi gerekiyor
# tek tek değerler kümesine dizi