[PYTHON] 및 / 또는 파이썬에서?
PYTHON및 / 또는 파이썬에서?
나는 and과 or의 표현식이 파이썬에 존재한다는 것을 알고 있지만, 그리고 / 또는 표현식은 무엇입니까? 또는 a 및 / 또는 표현식과 동일한 효과를 내기 위해 그들을 결합하는 어떤 방법?
내 코드는 다음과 같습니다.
if input=="a":
if "a" or "á" or "à" or "ã" or "â" in someList:
someList.remove("a") or someList.remove("á") or someList.remove("à") or someList.remove("ã") or someList.remove("â")
이 말은 사용자가 "a"를 입력하고 "a"가 이전에 정의 된 목록에 포함되어 있으면 주어진 목록에서 "a"의 모든 유형을 제거 할 수 있습니까?
파이썬은 문제가 있음을 알려줍니다.
someList.remove("a") or someList.remove("á") or someList.remove("à") or someList.remove("ã") or someList.remove("â")
그는 나에게 말한다 : ValueError : list.remove (x) : x가 목록에 없다.
해결법
-
==============================
1.매트 볼의 대답이 설명하는대로, 또는 "그리고 / 또는". 그러나 위에 사용하는 방식으로 작동하지 않습니다. 당신은 someList의 "a"또는 someList의 "á"또는 .... 아니면 더 나은 아직 말할 필요가 있습니다.
매트 볼의 대답이 설명하는대로, 또는 "그리고 / 또는". 그러나 위에 사용하는 방식으로 작동하지 않습니다. 당신은 someList의 "a"또는 someList의 "á"또는 .... 아니면 더 나은 아직 말할 필요가 있습니다.
if any(c in someList for c in ("a", "á", "à", "ã", "â")): ...
질문에 대한 답변입니다.
그러나 게시 한 예제 코드에 대해 몇 가지 더 이야기 할 것이 있습니다. 첫째, someList.remove ... 또는 someList remove ... 명령문의 체인이 불필요하며 예기치 않은 동작이 발생할 수 있습니다. 읽을 것도 어렵습니다! 그것을 개별 라인으로 나누는 것이 더 좋습니다.
someList.remove("a") someList.remove("á") ...
그러나 그것은 충분하지 않습니다. 관찰 한대로 항목이 목록에 없으면 오류가 발생합니다. 게다가 제거를 사용하는 것은 매우 느립니다. 호출 할 때마다 파이썬은 목록의 모든 항목을 살펴야하기 때문입니다. 따라서 10 개의 다른 문자를 제거하고 100 자의 목록이있는 경우 1000 개의 테스트를 수행해야합니다.
대신, 나는 아주 다른 접근법을 제안 할 것이다. 다음과 같이 집합을 사용하여 목록을 필터링하십시오.
chars_to_remove = set(("a", "á", "à", "ã", "â")) someList = [c for c in someList if c not in chars_to_remove]
또는 복사본을 만들지 않고 현재 위치에서 목록을 변경하십시오.
someList[:] = (c for c in someList if c not in chars_to_remove)
이 두 가지 모두 목록 이해도 구문을 사용하여 새 목록을 만듭니다. 그들은 someList의 모든 문자를보고 문자가 chars_to_remove에 있는지 확인하고 그렇지 않은 경우 문자를 새 목록에 포함시킵니다.
이것이이 코드의 가장 효율적인 버전입니다. 두 가지 속도 이점이 있습니다.
-
==============================
2.배타적이지 않고 (예 : xor) 그렇게 또는 및 / 또는 동일한 것입니다.
배타적이지 않고 (예 : xor) 그렇게 또는 및 / 또는 동일한 것입니다.
-
==============================
3.x와 y가 모두 참이면 x와 y는 true를 반환합니다. x 또는 y는 둘 중 하나가 참이면 리턴합니다.
x와 y가 모두 참이면 x와 y는 true를 반환합니다. x 또는 y는 둘 중 하나가 참이면 리턴합니다.
이것으로부터 우리는 xOR을 의미하지 않는 한 (또는 if와 true를 제외하고)
-
==============================
4.를 찾습니까...
를 찾습니까...
a if b else c
아니면 파이썬의 또는? 진실하거나 진실은 진실하다.
-
==============================
5.업데이트 된 질문의 경우 원하는 것을 다음과 같이 바꿀 수 있습니다.
업데이트 된 질문의 경우 원하는 것을 다음과 같이 바꿀 수 있습니다.
someList = filter(lambda x: x not in ("a", "á", "à", "ã", "â"), someList)
필터는 제공된 람다에 전달하여 목록의 모든 요소를 평가합니다. 이 람다에서는 요소가 제공된 문자 중 하나가 아닌지 확인합니다. 요소가 목록에 있어야하기 때문입니다.
또는 someList의 항목이 고유해야하는 경우 someList를 설정하고 다음과 같이 할 수 있습니다.
someList = list(set(someList)-set(("a", "á", "à", "ã", "â")))
이것은 본질적으로 당신이 원하는 것을하는 세트들 사이의 차이점을 취하지 만, 모든 요소가 한 번만 발생한다는 것을 확인합니다. 이것은 목록과 다릅니다. 이 경우 처음부터 someList를 집합으로 저장할 수 있으므로 약간 최적화됩니다.
-
==============================
6.이 솔루션을 사용해보십시오.
이 솔루션을 사용해보십시오.
for m in ["a", "á", "à", "ã", "â"]: try: somelist.remove(m) except: pass
귀하의 정보를 위해서. and 연산자 또는 연산자도 값을 반환하는 데 사용하고 있습니다. 변수에 값을 할당해야하지만 사전 요구 사항이 필요한 경우 유용합니다.
연산자 또는 첫 번째가 아닌 null 값을 반환합니다.
#init values a,b,c,d = (1,2,3,None) print(d or a or b or c) #output value of a - 1 print(b or a or c or d) #output value of b - 2
연산자가 None 값을 갖지 않거나 하나 이상의 None 값을 갖는 경우 시퀀스의 마지막 값을 반환합니다. 없음
print(a and d and b and c) #output: None print(a or b or c) #output value of c - 3
-
==============================
7.
if input == 'a': for char in 'abc': if char in some_list: some_list.remove(char)
from https://stackoverflow.com/questions/10149747/and-or-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] "파이썬에 사전 추가하기" [복제] (0) | 2018.11.12 |
---|---|
[PYTHON] numpy 배열의 모든 n 요소를 평균 (0) | 2018.11.12 |
[PYTHON] 파이썬 - 목록에서 마지막 x 요소를 추출하는 방법 (0) | 2018.11.12 |
[PYTHON] 파이썬 3에서 int ()와 floor ()의 차이점은 무엇입니까? (0) | 2018.11.11 |
[PYTHON] bash 스크립트에서 파이썬 스크립트의 반환 값 저장 (0) | 2018.11.11 |