Python: Bir listedeki ilk dizenin ilk karakterini al?


99

Python'da bir listedeki ilk dizeden ilk karakteri nasıl alırım?

Görünüşe göre kullanabilirim mylist[0][1:]ama bu bana ilk karakteri vermiyor.

>>> mylist = []
>>> mylist.append("asdf")
>>> mylist.append("jkl;")
>>> mylist[0][1:]
'sdf'

Yanıtlar:


141

Neredeyse haklıydın. En basit yol,

mylist[0][0]   # get the first character from the first item in the list

fakat

mylist[0][:1]  # get up to the first character in the first item in the list

aynı zamanda işe yarar.

İlk karakterden (karakter sıfır) sonra başlamak değil, ilk karakterden (karakter sıfır) sonra bitirmek istiyorsunuz , bu, sorunuzdaki kodun anlamı budur.


30

Çıplak bir python dizesinin ilk karakterini alın:

>>> mystring = "hello"
>>> print(mystring[0])
h
>>> print(mystring[:1])
h
>>> print(mystring[3])
l
>>> print(mystring[-1])
o
>>> print(mystring[2:3])
l
>>> print(mystring[2:4])
ll

Bir python listesinin ilk konumundaki bir dizeden ilk karakteri alın:

>>> myarray = []
>>> myarray.append("blah")
>>> myarray[0][:1]
'b'
>>> myarray[0][-1]
'h'
>>> myarray[0][1:3]
'la'

Python liste nesnelerinin operatörlerini ve Numpy ndarray nesnelerinin operatörlerini karıştırdıkları için birçok insan burada tökezliyor:

Numpy işlemleri python list işlemlerinden çok farklıdır.

Kafanızı Python'un "liste dilimleme, indeksleme, alt küme oluşturma" ve ardından Numpy'nin "maskeleme, dilimleme, alt küme oluşturma, indeksleme, sonra da numpy'nin gelişmiş fantezi indeksleme" nin iki çelişkili dünyasına sarın.

Bu iki video benim için işleri açıklığa kavuşturdu:

PyCon 2015'ten "Döngülerinizi Kaybetme, NumPy ile Hızlı Sayısal Hesaplama": https://youtu.be/EEUXKG97YRw?t=22m22s

"NumPy Beginner | SciPy 2016 Eğitimi", Alexandre Chabot LeClerc: https://youtu.be/gtejJ3RCddE?t=1h24m54s


16

0'dan başlayarak python'da indeksleme [1:] yazdınız, bu size her durumda bir ilk karakter döndürmez - bu size bir karakter dizisi (ilk karakter hariç) döndürecektir.

Aşağıdaki yapıya sahipseniz:

mylist = ['base', 'sample', 'test']

Ve ilk bir dize (öğe) için ilk karakter almak istiyorum:

myList[0][0]
>>> b

İlk karakterlerin tümü:

[x[0] for x in myList]
>>> ['b', 's', 't']    

Bir metniniz varsa:

text = 'base sample test'
text.split()[0][0]
>>> b

x [0] sözdizimini ve anlamını açıklar mısınız? Normalde döngüye şu noktadan başlarım
BI Dude

1
@BIDude [x [0] myList'te x için] bir liste anlamadır - hackernoon.com/list-comprehension-in-python-c762ba1f523f . Yani x [0], her bir myList öğesinden her ilk öğeyi almak istediğim anlamına gelir.
Artsiom Rudzenka

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.