Get the first character of the first string in a list?

在 Python 中,如何从列表的第一个字符串中获取第一个字符?

似乎我可以使用 mylist[0][1:],但是它没有给我第一个字符。

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

尝试 mylist[0][0]。这应该返回第一个字符。

在 python 中从0开始建立索引。你写了[1: ]这不会返回你的第一个字符在任何情况下-这将返回你的休息(除了第一个字符)的字符串。

如果你有以下结构:

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

并且希望获得第一个字符串(条目)的第一个 char:

myList[0][0]
>>> b

如果所有的第一个字符:

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

如果你有短信:

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

你差点就答对了,最简单的方法是

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

但是

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

也行得通。

您希望 结束在第一个字符之后(字符零) ,而不是 开始在第一个字符之后(字符零) ,这就是您问题中的代码的意思。

获取裸 Python 字符串的第一个字符:

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

从 python 列表的第一个位置的字符串中获取第一个字符:

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

Numpy operations are very different than python list operations.

Python 有列表切片、索引和子集。 Numpy 有屏蔽、切片、子集和索引。

这两个视频让我明白了一些事情。

“丢掉你的循环,使用 NumPy 进行快速数值计算”作者: PyCon 2015: Https://youtu.be/eeuxkg97yrw?t=22m22s

"NumPy Beginner | SciPy 2016 Tutorial" by Alexandre Chabot LeClerc: Https://youtu.be/gtejj3rcdde?t=1h24m54s

如果你的列表包含非字符串,例如 mylist = [0, [1, 's'], 'string'],那么这里的答案不一定有效。在这种情况下,使用 next()通过 isinstance()检查查找第一个字符串就可以了。

next(e for e in mylist if isinstance(e, str))[:1]

请注意,''[:1]返回 '',而 ''[0]返回 IndexError,因此根据用例的不同,两者都可能有用。

如果在 mylist中没有字符串,则上述操作将导致 StopIteration。在这种情况下,一种可能的实现是将默认值设置为 None,并且只有在找到字符串时才获取第一个字符。

first = next((e for e in mylist if isinstance(e, str)), None)
first_char = first[0] if first else None