Strings - Learn Python 3 - Snakify

Lesson 5
Teller


1. Teller

Bir giriş, fonksiyon input() kullanılarak standart girişten okunabilir veya tek veya çift tırnak içinde tanımlanabilir. İki dizge birleştirilebilir ve ayrıca bir dizgeyi n çarpanıyla çarparak yinelemeliyiz:

print('>_< ' * 5)  # &gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;

Python'daki bir dize, bir karakter dizisidir. len(some_string) işlevi, bir dizede kaç karakter bulunduğunu döndürür:

print(len('abcdefghijklmnopqrstuvwxyz'))  # 26

Python'daki her nesne, str(some_object) işlevi kullanılarak dizeye dönüştürülebilir. Böylece sayıları dizelere dönüştürebiliriz:

s = str(2 ** 100)
print(s)  # 1267650600228229401496703205376
print(len(s))  # 31
Advertising by Google, may be based on your interests

2. Dilimleri: tek karakter

Bir dilim, verilen dizgeden bir karakter veya bir parça verir: alt dizge veya alt dizidir.

Üç dilim şekli vardır. Dilimin en basit şekli: tek bir karakter dilim S[i] verir i dize karakter inci. 0'dan başlayarak karakterleri sayarız. Yani, eğer S = 'Hello' , S[0] == 'H' , S[1] == 'e' , S[2] == 'l' , S[3] == 'l' , S[4] == 'o' . Python'da dizenin karakterleri için ayrı bir karakter olmadığını unutmayın. S[i] ayrıca kaynak dizgisi gibi str türüne de sahiptir.

S[i] de sayı i bir indeks olarak adlandırılır.

Negatif bir indeks belirlerseniz, -1 sayısından başlayarak sondan sayılır. Yani, S[-1] == 'o' , S[-2] == 'l' , S[-3] == 'l' , S[-4] == 'e' , S[-5] == 'H' .

Bunu tabloda özetleyelim:

Teller 'H e l l O
indeks S [0] S [1] S [2] S [3] S [4]
indeks S [-5] S [-4] S [-3] S [-2] S [-1]

Dilim S[i] deki indeks len(S) eşit veya daha büyükse veya -len(S) den -len(S) , aşağıdaki hataya neden IndexError: string index out of range .

Advertising by Google, may be based on your interests

3. Dilimler: alt tabaka

Iki parametre ile dilim S[a:b] uzunlukta sonuna kadar olan alt döner b - a , indeks karakterle başlayan a ve dizin karakteri kadar süren b sonuncusu dahil değil. Örneğin, S[1:4] == 'ell' ve S[-4:-1] kullanarak aynı alt dizeyi alabilirsiniz. Pozitif ve negatif indeksleri aynı dilimde karıştırabilirsiniz, örneğin, S[1:-1] dizgenin ilk ve son karakteri olmayan bir alt dizedir (dilim, dizin 1 ile karakterle başlar ve bir dizin ile biter.) -1, dahil değil).

İki parametreli dilimler asla IndexError neden IndexError . Örneğin, S == 'Hello' için dilim S[1:5] 'ello' dizgisini döndürür ve ikinci indeks S[1:100] gibi çok büyük olsa bile sonuç aynıdır.

İkinci parametreyi atlarsanız (ancak sütunu koruyun), dilim dize sonuna gider. Örneğin, ilk karakteri dizeden kaldırmak için (dizini 0'dır) dilim S[1:] . Benzer şekilde, ilk parametreyi atlarsanız, Python dilimi dizenin başlangıcından alır. Yani, dizeden son karakteri çıkarmak için, S[:-1] dilimini kullanabilirsiniz S[:-1] . Dilim S[:] S dizisinin kendisiyle eşleşir.

Advertising by Google, may be based on your interests

4. Dilimler: dizelerin değişmezliği

Bir dizenin herhangi bir dilimi yeni bir dize oluşturur ve orijinalini hiçbir zaman değiştirmez. Python dizgileri değişmezdir, yani nesneler olarak değiştirilemezler. Değişkeni yalnızca yeni dizeye atayabilirsiniz, ancak eski olan bellekte kalır.

Aslında Python'da değişken yoktur. Sadece herhangi bir nesne ile ilişkilendirilmiş isimler vardır. Önce bir adı bir nesne ile ilişkilendirebilir ve sonra - başka biriyle. Birkaç isim bir ve aynı nesne ile ilişkilendirilebilir.

Bunu gösterelim:

s = 'Hello'
t = s  # s ve t aynı dizgiyi işaret eder
t = s[2:4]  # şimdi t yeni dizgeye işaret ediyor &#39;ll&#39;
print(s)  # s değiştirilmez olarak &#39;Merhaba&#39; yazdırır
print(t)  # baskı &#39;ll&#39;
Advertising by Google, may be based on your interests

5. Dilimler: altyazı

Üç parametre S[a:b:d] olan bir dilim belirtirseniz, üçüncü parametre, işlev range() aynı olan adımı belirtir. Bu durumda aşağıdaki indeksi ile sadece karakter alınır: a a + d , a + 2 * d dek ve indeks ile karakteri içermeyen ve benzeri b . Üçüncü parametre 2'ye eşitse, dilim her ikinci karakteri alır ve dilim adımı -1 eşitse, karakterler ters sırada olur. Örneğin, böyle bir dizeyi tersine çevirebilirsiniz: S[::-1] . Örnekleri görelim:

s = 'abcdefg'
print(s[1])
print(s[-1])
print(s[1:3])
print(s[1:-1])
print(s[:3])
print(s[2:])
print(s[:-1])
print(s[::2])
print(s[1::2])
print(s[::-1])
Dilimin üçüncü parametresinin, işlev range() üçüncü parametresine nasıl benzediğini not alın range() :
s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
    print(i, s[i])
Advertising by Google, may be based on your interests

6. Dizi yöntemleri: find () ve rfind ()

Bir yöntem, nesneye bağlı bir işlevdir. Yöntem çağrıldığında, yöntem nesneye uygulanır ve bununla ilgili bazı hesaplamalar yapar. Yöntemler object_name.method_name(arguments) olarak çağrılır. Örneğin, s.find("e") , string yöntemi find() , "e" tek argümanı ile s dizisine uygulanır.

Yöntem find() , çağrıldığı dizenin içinde argüman olarak iletilen bir alt dizeyi arar. İşlev, alt dizenin ilk oluşumunun dizinini döndürür. Alt tabaka bulunamazsa, yöntem -1 değerini döndürür.

s = 'Hello'
print(s.find('e'))
# 1
print(s.find('ll'))
# 2
print(s.find('L'))
# -1

Benzer şekilde, rfind() yöntemi, alt dizenin son oluşumunun dizinini döndürür.

s = 'abracadabra'
print(s.find('b'))
# 1
print(s.rfind('b'))
# 8

Üç argüman olan find() s.find(substring, left, right) , arama, s[left:right] s.find(substring, left, right) içinde gerçekleştirilir s[left:right] . Eğer s.find(substring, left) gibi sadece iki argüman belirtirseniz, arama s[left:] dilimi s[left:] , yani dizgenin left dizinin left karakterle başlayarak gerçekleştirilir. Metot s.find(substring, left, right) mutlak indeksi, tüm string s göreli olarak değil, dilime döndürür.

s = 'my name is bond, james bond, okay?'
print(s.find('bond'))
# 11
print(s.find('bond', 12))
# 23
Advertising by Google, may be based on your interests

7. Dize yöntemleri: replace ()

Yöntem replace() , belirli bir alt dizenin tüm yinelemelerini diğeriyle değiştirir. Sözdizimi: s.replace(old, new) , S dizesini alır ve alt dizgenin new olan tüm old yinelemelerini yenisiyle değiştirir. Örnek:

print('a bar is a bar, essentially'.replace('bar', 'pub'))
# &#39;Bir pub aslında bir bardır&#39;

Üçüncü argüman count şöyle s.replace(old, new, count) : s.replace(old, new, count) . Sadece ilk count oluşumlarını değiştirmek ve sonra durdurmak için replace() yapar.

print('a bar is a bar, essentially'.replace('bar', 'pub', 1))
# &#39;Bir bar aslında bar&#39;
Advertising by Google, may be based on your interests

8. Dize yöntemleri: count ()

Bu yöntem, bir dizenin başka bir dizenin içindeki sayısını gösterir. En basit form şudur: s.count(substring) . Sadece örtüşmeyen olaylar dikkate alınır:

print('Abracadabra'.count('a'))
# 4
print(('aaaaaaaaaa').count('aa'))
# 5

Eğer s.count(substring, left, right) olmak üzere üç parametre s.count(substring, left, right) , sayım s[left:right] dilimi içerisinde yapılır s[left:right] .

Advertising by Google, may be based on your interests