사용자가 값을 입력하면 그 값이 이미 목록에 있는지 알 수 있는지 궁금합니다.목록에서 중복 값을 찾는 방법 Python
예 :
lis = ['foo', 'boo', 'hoo']
사용자 입력 :
'boo'
나는이 값이 이미 목록 내부에 존재하는 사용자를 알 수있는 방법을 이제 내 질문입니다.
사용자가 값을 입력하면 그 값이 이미 목록에 있는지 알 수 있는지 궁금합니다.목록에서 중복 값을 찾는 방법 Python
예 :
lis = ['foo', 'boo', 'hoo']
사용자 입력 :
'boo'
나는이 값이 이미 목록 내부에 존재하는 사용자를 알 수있는 방법을 이제 내 질문입니다.
사용 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
UPDATE
닉 T는 주석으로, 당신은 항목의 순서에 대해 걱정하지 않는 경우 사용할 수 있습니다 set
:
>>> lis = {'foo', 'boo', 'hoo'} # set literal == set(['foo', 'boo', 'hoo'])
>>> lis.add('foo') # duplicated item is not added.
>>> lis
{'boo', 'hoo', 'foo'}
고마워요 친구! 이것은 많은 도움이 .. 그리고 몇 가지 아이디어를 취소하십시오. :) – Andre
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)
후세인 형제 님, 감사합니다. 아주 좋은 예입니다. 두 번째 예제는 짧고 간결하며, 정말 좋습니다. – Andre
귀하의 질문은 목록에 중복 *을 피하십시오. 순서를 신경 쓰지 않는다면'set'을 사용할 수도 있습니다. 복제본을 추가하려고하면 그것을 무시합니다. –
오 예 ... 세트 기능 ... 나는 그 사용법에 익숙하지 않다. 그러나 나는 실제로 그것을 실제로 보았다. – Andre
그것은 함수는 아니지만 [완전한 데이터 형식] (https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset)과 함께 'int', dict','list','str' 등이 있습니다. –