列表元素没有迭代

时间:2009-05-13 13:58:29

标签: python list find iteration

我想知道如何在没有迭代的情况下在列表中查找元素

3 个答案:

答案 0 :(得分:9)

列表的mylist.index("blah") method将返回项目“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

答案 1 :(得分:5)

这是一个有点奇怪的问题。您是否需要使用$someDeity的热线,或者您希望其他功能为您进行迭代,还是希望更有效方式来测试会员资格?

在第一种情况下,我无法帮助你。在第二种情况下,请查看documentation on lists,特别是index方法。在第三种情况下,请创建set并使用in关键字。请注意,如果您打算多次搜索列表,则集合创建只会得到回报。

>>> l = [1, 2, 3]
>>> l.index(2)
1
>>> 3 in l
True
>>> ls = set(l)
>>> 3 in ls
True

答案 2 :(得分:4)

您还可以使用in语法:

>>> l = [1,2,3]
>>> 1 in l
True