我想知道如何在没有迭代的情况下在列表中查找元素
列表的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 "", line 1, in 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
正如哈珀谢尔比评论,Python将仍然要在内部循环找项目,但该指数或方法可能稍微比在Python做更快,因为数据结构是用C语言实现.但更重要的是,
"x" in mylist
.. 比... 更整洁
found = False for cur in mylist: if cur == "x": found = True
这是一个有点奇怪的问题.您想要热线$someDeity
吗,或者您是否希望其他功能为您进行迭代,或者您是否想要一种更有效的方式来测试会员资格?
在第一种情况下,我无法帮助你.在第二种情况下,请查看列表上的文档,特别是index
方法.在第三种情况下,创建一个set
并使用in
关键字.请注意,如果您打算多次搜索列表,则集创建仅会产生回报.
>>> l = [1, 2, 3] >>> l.index(2) 1 >>> 3 in l True >>> ls = set(l) >>> 3 in ls True