다음 항목이 모두 목록에 있는지 확인하는 방법은 무엇입니까?
목록에 하나 이상의 항목이 있는지 찾는 방법에 대한 관련 질문이 있음을 발견 했습니다. 다음 항목 중 하나가 목록
에 있는지 확인하는 방법은 무엇입니까?
그러나 모든 항목이 목록에 있는지 여부를 찾는 가장 좋고 비단뱀적인 방법은 무엇입니까?
문서를 검색하여이 솔루션을 찾았습니다.
>>> l = ['a', 'b', 'c']
>>> set(['a', 'b']) <= set(l)
True
>>> set(['a', 'x']) <= set(l)
False
다른 해결책은 다음과 같습니다.
>>> l = ['a', 'b', 'c']
>>> all(x in l for x in ['a', 'b'])
True
>>> all(x in l for x in ['a', 'x'])
False
그러나 여기서 더 많은 타이핑을해야합니다.
다른 해결책이 있습니까?
<=
Python 과 같은 연산자 는 일반적으로 "작거나 같음"과 크게 다른 의미로 재정의되지 않습니다. 표준 라이브러리에서이 작업을 수행하는 것은 드문 경우입니다. 레거시 API 냄새가납니다.
동등하고 더 명확하게 이름이 지정된 방법 인 set.issubset
. 인수를 집합으로 변환 할 필요가 없습니다. 필요한 경우 그렇게 할 것입니다.
set(['a', 'b']).issubset(['a', 'b', 'c'])
아마도 set
다음과 같은 방식으로 사용할 것입니다 .
set(l).issuperset(set(['a','b']))
또는 그 반대의 경우 :
set(['a','b']).issubset(set(l))
좀 더 읽기 쉽지만 과도 할 수 있습니다. 집합은 컬렉션 간의 합집합 / 교차 / 차이를 계산하는 데 특히 유용하지만이 상황에서는 최선의 선택이 아닐 수 있습니다.
나는이 두 가지가 가장 논리적으로 보이기 때문에 좋아합니다. 후자는 더 짧고 아마도 가장 빠를 것입니다 (여기서는 Python 2.7 set
로 백 포트 된 리터럴 구문을 사용하여 표시됨 ).
all(x in {'a', 'b', 'c'} for x in ['a', 'b'])
# or
{'a', 'b'}.issubset({'a', 'b', 'c'})
목록에 다음과 같은 중복 항목이 포함 된 경우 :
v1 = ['s', 'h', 'e', 'e', 'p']
v2 = ['s', 's', 'h']
세트는 중복을 포함하지 않습니다. 따라서 다음 줄은 True를 반환합니다.
set(v2).issubset(v1)
중복을 계산하려면 다음 코드를 사용할 수 있습니다.
v1 = sorted(v1)
v2 = sorted(v2)
def is_subseq(v2, v1):
"""Check whether v2 is a subsequence of v1."""
it = iter(v1)
return all(c in it for c in v2)
So, the following line returns False.
is_subseq(v2, v1)
This was what I was searching online but unfortunately found not online but while experimenting on python interpreter.
>>> case = "caseCamel"
>>> label = "Case Camel"
>>> list = ["apple", "banana"]
>>>
>>> (case or label) in list
False
>>> list = ["apple", "caseCamel"]
>>> (case or label) in list
True
>>> (case and label) in list
False
>>> list = ["case", "caseCamel", "Case Camel"]
>>> (case and label) in list
True
>>>
and if you have a looong list of variables held in a sublist variable
>>>
>>> list = ["case", "caseCamel", "Case Camel"]
>>> label = "Case Camel"
>>> case = "caseCamel"
>>>
>>> sublist = ["unique banana", "very unique banana"]
>>>
>>> # example for if any (at least one) item contained in superset (or statement)
...
>>> next((True for item in sublist if next((True for x in list if x == item), False)), False)
False
>>>
>>> sublist[0] = label
>>>
>>> next((True for item in sublist if next((True for x in list if x == item), False)), False)
True
>>>
>>> # example for whether a subset (all items) contained in superset (and statement)
...
>>> # a bit of demorgan's law
...
>>> next((False for item in sublist if item not in list), True)
False
>>>
>>> sublist[1] = case
>>>
>>> next((False for item in sublist if item not in list), True)
True
>>>
>>> next((True for item in sublist if next((True for x in list if x == item), False)), False)
True
>>>
>>>
An example of how to do this using a lambda expression would be:
issublist = lambda x, y: 0 in [_ in x for _ in y]
참고URL : https://stackoverflow.com/questions/3931541/how-to-check-if-all-of-the-following-items-are-in-a-list
'developer tip' 카테고리의 다른 글
www- 데이터 권한? (0) | 2020.08.25 |
---|---|
PowerShell을 사용하여 파일에서 여러 문자열을 바꾸는 방법 (0) | 2020.08.25 |
printf의 패딩 문자 (0) | 2020.08.25 |
다른 매개 변수로 여러 메서드 호출을 확인하는 방법 (0) | 2020.08.25 |
iOS 7에서 UINavigationbar 아래의 UISegmentedControl (0) | 2020.08.25 |