Python: Czy pobrać pierwszy znak pierwszego ciągu na liście?

99

Jak uzyskać pierwszy znak z pierwszego ciągu na liście w Pythonie?

Wydaje się, że mógłbym użyć, mylist[0][1:]ale to nie daje mi pierwszego charakteru.

>>> mylist = []
>>> mylist.append("asdf")
>>> mylist.append("jkl;")
>>> mylist[0][1:]
'sdf'
Trcx
źródło

Odpowiedzi:

141

Prawie miałeś rację. Najprostszy sposób to

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

ale

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

również zadziała.

Chcesz kończyć się po pierwszym znaku (znaku zero), a nie zaczynać po pierwszym znaku (znaku zero), co oznacza kod w Twoim pytaniu.

agf
źródło
30

Pobierz pierwszy znak czystego ciągu znaków Pythona:

>>> 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

Pobierz pierwszy znak z łańcucha na pierwszej pozycji listy w Pythonie:

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

Wiele osób potyka się tutaj, ponieważ mieszają operatory obiektów list Pythona z operatorami obiektów Numpy ndarray:

Operacje Numpy bardzo różnią się od operacji listowych w Pythonie.

Owiń głowę dwoma sprzecznymi światami: „dzielenie list, indeksowanie, podzbiór” w Pythonie, a następnie „maskowanie, krojenie, podzbiór, indeksowanie, a następnie ulepszone fantazyjne indeksowanie Numpy”.

Te dwa filmy wyjaśniły mi sprawę:

„Losing your Loops, Fast Numerical Computing with NumPy”, PyCon 2015: https://youtu.be/EEUXKG97YRw?t=22m22s

„NumPy Beginner | SciPy 2016 Tutorial” autorstwa Alexandre Chabot LeClerc: https://youtu.be/gtejJ3RCddE?t=1h24m54s

Eric Leschinski
źródło
16

Indeksowanie w Pythonie zaczynające się od 0. Napisałeś [1:], to w żadnym wypadku nie zwróci ci pierwszego znaku - zwróci ci to resztę (z wyjątkiem pierwszego znaku) łańcucha.

Jeśli masz następującą strukturę:

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

I chcę uzyskać pierwszy znak dla pierwszego ciągu (elementu):

myList[0][0]
>>> b

Jeśli wszystkie pierwsze znaki:

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

Jeśli masz tekst:

text = 'base sample test'
text.split()[0][0]
>>> b
Artsiom Rudzenka
źródło
czy mógłbyś wyjaśnić składnię i znaczenie x [0]? Zwykle zaczynam pętlę od for
BI Dude
1
@BIDude [x [0] for x in myList] to lista składana - hackernoon.com/list-comprehension-in-python-c762ba1f523f . Zatem x [0] oznacza, że ​​chciałbym pobrać każdy pierwszy element z każdego elementu myList.
Artsiom Rudzenka
4

Spróbuj mylist[0][0]. Powinno to zwrócić pierwszy znak.

Konstantyniusz
źródło