不使用迭代列出元素
我想知道怎么在列表中找到一个元素,而不需要一个一个地去查找。
3 个回答
4
你也可以使用 in
这种写法:
>>> l = [1,2,3]
>>> 1 in l
True
9
列表的 mylist.index("blah")
方法 会返回 "blah" 这个项第一次出现的位置(索引)。
>>> ["item 1", "blah", "item 3"].index("blah")
1
>>> ["item 1", "item 2", "blah"].index("blah")
2
如果找不到这个项,它会抛出一个错误,叫做 ValueError:
>>> ["item 1", "item 2", "item 3"].index("not found")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list
你也可以用 in
这个关键词来检查某个项是否在列表里(但不会告诉你它的位置):
>>> "not found" in ["item 1", "blah", "item 3"]
False
>>> "item 3" in ["item 1", "blah", "item 3"]
True
正如 Harper Shelby 评论的那样,Python 在内部还是需要遍历列表来找到这些项,不过用索引或 in 方法可能会比用 Python 自己的方式稍微快一点,因为这些数据结构是用 C 语言实现的。但更重要的是,
"x" in mylist
..这样做会显得 整洁得多 ..
found = False
for cur in mylist:
if cur == "x":
found = True