pythonand 및 or 연산의 핵심 아이디어 - 단락 논리
시작됨 최근에 Liao Xuefeng의 Python 튜토리얼을 읽으면서 저는 "파이썬을 어려운 방법으로 배우기"를 먼저 넣을 계획입니다. 왜냐하면 마지막 몇 장이 여전히 약간 어렵게 느껴지기 때문입니다(음, 저는 너무 약하지만 한 번에 한 단계씩 시간을 내십시오). 생각해보기 Liao Xuefeng의 튜토리얼을 읽은 후 돌아가서 몇 가지 아이디어를 얻을 수 있을 것입니다.
다시 본론으로 돌아가서, 제가 오늘 이 글을 쓴 이유는 Liao Xuefeng 튜토리얼의 필터 장에 이 항목이 등장했기 때문입니다. 이것은 이전 튜토리얼에서는 언급되지 않았습니다. , 처음 읽었을 때 혼란 스러웠습니다. 코드는 다음과 같습니다.
#把一个序列中的空字符串删掉 1> def not_empty(s): 2> return s and s.strip() 3> 4> filter(not_empty, ['A', '', 'B', None, 'C', ' '])
나중에 인터넷에서 and/or에 대한 일부 작동 논리를 확인하고 직접 추가했습니다. 이해하고 다음과 같이 요약했습니다. (잘못된 부분이 있으면 수정해주세요.)
먼저, 기본 개념부터 시작해 보겠습니다. Python의 어떤 개체가 False로 처리됩니까? 그리고 어느 것이 사실인가요?
** Python에서는 없음, 모든 숫자 유형의 0, 빈 문자열 "", 빈 튜플(), 빈 목록 [], 빈 사전 {}은 False로 처리되며, 사용자 정의 유형이 0이 아닌 () 또는 len () 메서드와 해당 메서드가 0 또는 False를 반환하면 해당 인스턴스도 False로 처리되고 다른 개체는 True가 됩니다. **
다음은 가장 간단한 논리 연산입니다.
True and True ==> True True or True ==> True True and False ==> False True or False ==> True False and True ==> False False or True ==> True False and False ==> False False or False ==> False
위의 두 가지 점을 사용하여 몇 가지 예를 들 수 있습니다.
>>> a = [0, 1, '' ,3] >>> a[0] and a[1] 0
a[0] = 0, a[1] = 1이므로 a[0]과 a[1]은 0과 1(False 및 True)이 되므로 0(False)입니다.
>>> a = [0, 1, '' ,3] >>> a[2] and a[1] ''
둘 다 동시에 False인 경우 왼쪽 값을 반환합니다.
논리 연산자 및/또는이 둘 이상인 경우 해당 연산 규칙의 핵심 아이디어는 단락 논리입니다. 자, 단편적 사고를 살펴보자(제 요약은 인터넷상의 다른 분들의 의견과 다를 수 있으니 제 분석을 천천히 들어주세요):
표현에서 왼쪽에서 오른쪽으로 연산, or 왼쪽의 논리값이 True이면 or 이후의 모든 표현식이 단락되고 or 왼쪽의 표현식이 직접 출력됩니다.
표현식은 왼쪽에서 오른쪽으로 평가됩니다. and 왼쪽의 논리값이 False이면 모든 후속 및 표현식은 or가 나타날 때까지 단락되고 표현식은 단락됩니다. and 의 왼쪽이 출력됩니다. or 의 왼쪽으로 가서 다음 논리연산에 참여합니다.
or의 좌변이 False이거나 and의 좌변이 True이면 단락 논리를 사용할 수 없습니다.
조금 추상적일 수도 있지만 괜찮습니다. 다음에는 몇 가지 예를 들어 보겠습니다. <… 처음에는 all and 문 또는 all or 문이라고 가정합니다.
예제 1
1> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() and b() and c() and d() and e(): 18> print 'ok' #显示结果如下 A
a()의 논리값은 False이고 뒤에 and 문이 있으며 모두 단락되어 있습니다. 그리고 마지막으로 a()의 표현식을 반환했습니다.
1> def a(): 2> print 'A' 3> return 1 4> def b(): 5> print 'B' 6> return 1 7> def c(): 8> print 'C' 9> return [] 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() and b() and c() and d() and e(): 18> print 'ok' #显示结果如下 A B C
a()의 논리값은 True이고 단락될 수 없습니다. 그 후 b()로 논리 연산을 수행하고 b의 논리값 True를 반환합니다. (), 이는 c()와 동일합니다. 논리 연산을 수행하고 c()의 논리값 False를 반환합니다. 모두 뒤에 and 문이 오면 모두 단락되고 최종적으로 c()의 식이 반환됩니다.
1> def a(): 2> print 'A' 3> return 1 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() or b() or c() or d() or e(): 18> print 'ok' #显示结果如下 A ok
a()의 논리값이 True이고 뒤에 or 문이 이어지며 모두 단락되고 마지막으로 a()의 표현식이 반환됩니다.
1> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> 17> if a() or b() or c() or d() or e(): 18> print 'ok' #显示结果如下 A B C ok
a()의 논리값은 True이고 단락될 수 없습니다. 이후 b()로 논리 연산을 수행하고 논리값 False를 반환합니다. b(), 이는 c()와 동일합니다. 논리 연산을 수행하고 c()의 논리값 True를 반환합니다. 모두 뒤에 or 문이 오면 모두 단락되고 마지막으로 c()의 표현식이 됩니다. 반환됩니다.
예제 5
1> def a(): 2> print 'A' 3> return [] 4> def b(): 5> print 'B' 6> return [] 7> def c(): 8> print 'C' 9> return 1 10> def d(): 11> print 'D' 12> return [] 13> def e(): 14> print 'E' 15> return 1 16> def f(): 17> print 'F' 18> return 1 19> def g(): 20> print 'G' 21> return [] 22> def h(): 23> print 'H' 24> return 1 25> 26> if a() and b() and c() and d() or e() and f() or g() and h(): 27> print 'ok' #输出结果如下: A E F ok
3.
3항 연산연산자转化为 python 语言为:
bool and a or b
如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。
换一种更简单的写法:
return a if bool else b
【相关推荐】
위 내용은 및/또는 Python의 작동 논리에 대한 예제 튜토리얼을 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!