반응형
파이썬에 부울 목록이 있습니다. 나는 그들을 AND (또는 OR 또는 NOT)하고 결과를 얻고 싶습니다. 다음 코드는 작동하지만 그다지 파이썬 적이지는 않습니다.
def apply_and(alist):
if len(alist) > 1:
return alist[0] and apply_and(alist[1:])
else:
return alist[0]
그것을 더 비단뱀처럼 만드는 방법에 대한 제안.
해결 방법
a_list
의 모든 요소에 대한 논리적 and
:
all(a_list)
a_list
의 모든 요소에 대한 논리적 또는
:
any(a_list)
창의적이라고 생각되면 다음을 수행 할 수도 있습니다.
import operator
def my_all(a_list):
return reduce(operator.and_, a_list, True)
def my_any(a_list):
return reduce(operator.or_, a_list, False)
내장은 ;-) 동안 그것들은 단락으로 평가되지 않는다는 것을 명심하십시오.
또 다른 재미있는 방법 :
def my_all_v2(a_list):
return len(filter(None,a_list)) == len(a_list)
def my_any_v2(a_list):
return len(filter(None,a_list)) > 0
그리고 또 다른 :
def my_all_v3(a_list):
for i in a_list:
if not i:
return False
return True
def my_any_v3(a_list):
for i in a_list:
if i:
return True
return False
그리고 우리는 하루 종일 갈 수 있지만, 예, 파이썬적인 방법은 all
과 any
를 사용하는 것입니다 :-)
그건 그렇고, 파이썬에는 꼬리 재귀 제거 기능이 없으므로 LISP 코드를 직접 번역하지 마십시오 ;-)
참조 페이지 https://stackoverflow.com/questions/1790520
반응형
'파이썬' 카테고리의 다른 글
파이썬에서 if / elif 문에 대한 대안은 무엇입니까? (0) | 2021.01.12 |
---|---|
파이썬 Python에서 한 디렉터리 위로 이동 (0) | 2021.01.12 |
파이썬 Python 3 앱을 .exe로 어떻게 컴파일합니까? (0) | 2021.01.12 |
파이썬 Python argparse 상호 배타적 그룹 (0) | 2021.01.12 |
파이썬 Python에서 목록 시작 부분에 정수 추가 (0) | 2021.01.12 |
댓글