27

假设我有一个可以包含一个或两个元素的列表:

mylist=["important", "comment"]

或者

mylist=["important"]

然后我想让一个变量作为一个标志,这取决于这个第二个值是否存在。

检查第二个元素是否存在的最佳方法是什么?

我已经使用len(mylist). 如果是 2 就好了。它有效,但我想知道第二个字段是否完全是“评论”。

然后我来到了这个解决方案:

>>> try:
...      c=a.index("comment")
... except ValueError:
...      print "no such value"
... 
>>> if c:
...   print "yeah"
... 
yeah

但是看起来太长了。你觉得可以改进吗?我确信它可以但无法从Python Data Structures Documentation中找到正确的方法。

4

3 回答 3

45

您可以使用in运算符:

'comment' in mylist

或者,如果位置很重要,请使用切片:

mylist[1:] == ['comment']

后者适用于大小为 1、2 或更长的列表,并且仅True当列表长度为 2第二个元素等于 时'comment'

>>> test = lambda L: L[1:] == ['comment']
>>> test(['important'])
False
>>> test(['important', 'comment'])
True
>>> test(['important', 'comment', 'bar'])
False
于 2013-08-06T15:25:13.920 回答
16

关于什么:

len(mylist) == 2 and mylist[1] == "comment"

例如:

>>> mylist = ["important", "comment"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
True
>>>
>>> mylist = ["important"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
False
于 2013-08-06T15:24:24.063 回答
15

使用in运算符:

>>> mylist=["important", "comment"]
>>> "comment" in mylist
True

啊! 错过了你说的部分,你只想"comment"成为第二个元素。为此,您可以使用:

len(mylist) == 2 and mylist[1] == "comment"
于 2013-08-06T15:23:14.133 回答