我想知道如何在没有迭代的情况下在列表中找到一个元素
问问题
1515 次
3 回答
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 仍然需要在内部进行迭代才能找到项目,但是索引或方法可能比在 Python 中更快,因为数据结构是用 C 实现的。但更重要的是,
"x" in mylist
..比..整洁得多
found = False
for cur in mylist:
if cur == "x":
found = True
于 2009-05-13T13:59:42.693 回答
5
这是一个有点奇怪的问题。你想要一个热线$someDeity
,还是想要另一个函数为你做迭代,或者你想要一个更有效的方法来测试成员资格?
在第一种情况下,我无法帮助您。在第二种情况下,请查看有关 lists 的文档,特别是index
方法。在第三种情况下,创建一个set
并使用in
关键字。请注意,只有在您打算多次搜索列表时,才能创建集合。
>>> l = [1, 2, 3]
>>> l.index(2)
1
>>> 3 in l
True
>>> ls = set(l)
>>> 3 in ls
True
于 2009-05-13T14:03:49.847 回答
4
您还可以使用in
语法:
>>> l = [1,2,3]
>>> 1 in l
True
于 2009-05-13T14:03:45.823 回答