Dizeden son karakteri kaldır


509

Diyelim ki dizem 10 karakter uzunluğunda.

Son karakteri nasıl silebilirim?

Dizem "abcdefghij"( 'j'Dizgim birden çok 'j'karakter içerebileceğinden , karakteri değiştirmek istemiyorum) ise yalnızca son karakterin gitmesini istiyorum. Ne olursa olsun veya kaç kez meydana geldiğine bakılmaksızın, son karakteri dizemden kaldırmam gerekiyor.


Yanıtlar:


833

Basit:

st =  "abcdefghij"
st = st[:-1]

Adımlarla nasıl yapıldığını gösteren başka bir yol da vardır:

list1 = "abcdefghij"
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

Bu aynı zamanda kullanıcı girişi ile de bir yoldur:

list1 = input ("Enter :")
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

Listedeki son kelimeyi kaldırmasını sağlamak için:

list1 = input("Enter :")
list2 = list1.split()
print(list2)
list3 = list2[:-1]
print(list3)

3
Evet, st[-1]sadece son karakterist
Cyrille

5
Aslında bu dilim stboş olsa bile çalışmaya devam eder . Yine de boş bir dize döndürecek, ancak hata almayacaksınız.
tür

1
Bir kelime listeniz varsa ve her kelimenin son karakterini silmek istiyorsanız ne olur? [mavi, kırmızı, yeşil] => [blu, re, gree]?
Jellyse

5
[i[:-1] for i in ['blue','red','green']]
Cyrille

3
Örneklere bakıldığında listeleri değişken olduğunu ve bu söz için değer list.pop()yerine son öğeyi kaldırır olarak yöntem, listeleri ile uğraşırken gitmek yoludur O(1)iken, [:-1]dilimleme son öğe olmadan listesinin bir kopyasını oluşturur O(n-1)süre artı O(n-1)alan. Dizeler değişmez - bu yüzden eklenecek bir şey yok.
Dmitry

19

Yapmaya çalıştığınız şey Python'da dize dilimlemenin bir uzantısıdır :

Diyelim ki tüm dizeler uzunluk 10, kaldırılacak son karakter:

>>> st[:9]
'abcdefghi'

Son Nkarakterleri kaldırmak için :

>>> N = 3
>>> st[:-N]
'abcdefg'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.