Python: Lấy ký tự đầu tiên của chuỗi đầu tiên trong danh sách?


96

Làm cách nào để lấy ký tự đầu tiên từ chuỗi đầu tiên trong danh sách bằng Python?

Có vẻ như tôi có thể sử dụng mylist[0][1:]nhưng điều đó không mang lại cho tôi ký tự đầu tiên.

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

Câu trả lời:


138

Bạn gần như đã đúng. Cách đơn giản nhất là

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

nhưng

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

cũng sẽ hoạt động.

Bạn muốn kết thúc sau ký tự đầu tiên (ký tự không), không bắt đầu sau ký tự đầu tiên (ký tự 0), đó là ý nghĩa của mã trong câu hỏi của bạn.


30

Lấy ký tự đầu tiên của một chuỗi python trầ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

Lấy ký tự đầu tiên từ một chuỗi ở vị trí đầu tiên của danh sách python:

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

Nhiều người gặp khó khăn ở đây vì họ đang trộn các toán tử của đối tượng danh sách Python và toán tử của đối tượng ndarray Numpy:

Các hoạt động Numpy rất khác so với các hoạt động trong danh sách python.

Hãy xem xét hai thế giới xung đột của Python là "cắt danh sách, lập chỉ mục, tập hợp con" và sau đó là "tạo mặt nạ, cắt, đặt con, lập chỉ mục, sau đó là lập chỉ mục ưa thích nâng cao của numpy".

Hai video này đã giải tỏa mọi thứ cho tôi:

"Mất vòng lặp của bạn, tính toán số nhanh với NumPy" của PyCon 2015: https://youtu.be/EEUXKG97YRw?t=22m22s

"NumPy Beginner | SciPy 2016 Tutorial" của Alexandre Chabot LeClerc: https://youtu.be/gtejJ3RCddE?t=1h24m54s


14

Lập chỉ mục trong python bắt đầu từ 0. Bạn đã viết [1:] điều này sẽ không trả lại cho bạn một ký tự đầu tiên trong mọi trường hợp - điều này sẽ trả lại cho bạn phần còn lại (ngoại trừ ký tự đầu tiên) của chuỗi.

Nếu bạn có cấu trúc sau:

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

Và muốn nhận được char nắm tay cho một chuỗi (mục) đầu tiên:

myList[0][0]
>>> b

Nếu tất cả các ký tự đầu tiên:

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

Nếu bạn có một văn bản:

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

bạn có thể vui lòng giải thích cú pháp và ý nghĩa của x [0] được không? Thông thường, tôi bắt đầu vòng lặp từ for
BI Dude,

1
@BIDude [x [0] cho x trong myList] là một danh sách hiểu được - hackernoon.com/list-complusivension-in-python-c762ba1f523f . Vì vậy, x [0] có nghĩa là tôi muốn lấy mỗi phần tử đầu tiên từ mỗi phần tử myList.
Artsiom Rudzenka

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.