我想知道如何知道当用户输入值时,该值是否已存在于列表中。
例如;
lis = ['foo', 'boo', 'hoo']
用户输入:
'boo'
现在我的问题是如何告诉用户这个值已经存在于列表中。
答案 0 :(得分:4)
使用in
operator:
>>> lis = ['foo', 'boo', 'hoo']
>>> 'boo' in lis
True
>>> 'zoo' in lis
False
您还可以使用lis.index
来返回元素的索引。
>>> lis.index('boo')
1
如果找不到该元素,则会引发ValueError
:
>>> lis.index('zoo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'zoo' is not in list
<强>更新强>
正如Nick T评论的那样,如果您不关心项目的顺序,可以使用set
:
>>> lis = {'foo', 'boo', 'hoo'} # set literal == set(['foo', 'boo', 'hoo'])
>>> lis.add('foo') # duplicated item is not added.
>>> lis
{'boo', 'hoo', 'foo'}
答案 1 :(得分:4)
您可以采用的另一种方法是使用集合: -
import collections
lis = ['foo', 'boo', 'hoo']
# Now if user inputs boo
lis.append('boo')
print [x for x, y in collections.Counter(lis).items() if y > 1]
# Now it will print the duplicate value in output:-
boo
但上述效率不高。因此,为了使其有效使用设置,因为在结束时表示为falsetru: -
totalList= set()
uniq = []
for x in lis:
if x not in totalList:
uniq.append(x)
totalList.add(x)