max (a, b)! = max (b, a)와 같은 a, b가 있습니까? [닫은]


11

파이썬 3.x의에서, 거기에 몇 가지 a, b그 같은 max(a, b) != max(b, a)?

abA-내장의 파이썬 유형이어야하고 변환을 포함하지 않습니다.

의 종류 ab수 있습니다 : NUM, 플로트, 부울,리스트, 튜플 ...

예:

a = 1 # Correct
a = [1, 2] # Correct
a = float('nan') # Wrong

1
귀하의 질문이 분명하지 않습니다
seralouk

나는 그것이 없다고 생각합니다 ... 반복 가능한 객체를 입력으로 max취하는 내장 함수입니다 . 그래서, 과 동일 하므로 동일해야합니다a,bb,amax(a,b)max(b,a)
Anwarvic

1
이것은 좋은 질문이지만 편집하고 더 자세히 설명해야합니다
El.Hum

2
가장 많이 투표 된 답변 아래의 의견 맥락에서만 편집 내용이 의미가 있습니다. 거기와 여기에서, 당신 float('nan')은 내장형이 아니라고 주장 하지 않습니다. "내장 유형"은 new을 만들지 않고도 만들 수있는 모든 것을 의미한다고 가정 class합니다.
Teepeemm

2
제외하고 싶다면 float('nan')왜 그렇습니까? 분명히, 당신은 당신이 float('nan')원한다면 같은 것을 배제하는 질문을 할 수 있습니다 ; 그것은 문제가 아닙니다. 문제는 당신이 무엇을 물어 보려는 지 아무도 모른다는 것입니다.
Nat

답변:


17

이것은 모든 기준을 충족시킵니다.

>>> max(1.0, float("nan"))
1.0

>>> max(float("nan"), 1.0)
nan

!=또는 이외의 비교 isfloat("nan")항상 false를 반환 하기 때문 입니다.

보다 일반적으로 max(a, b) != max(b, a)유형 a, b이 총 주문을 제공하지 않을 때 가질 수 있습니다 . Daniel Mesejo가 지적한 것처럼 세트에도이 속성이 있습니다. 세트 들어 <수단 '엄격한 부분 집합'만과 {1, 2}{3, 4}도 매우 다른 엄격한 부분 집합이다 :

>>> max({1, 2}, {3, 4})
{1, 2}

>>> max({3, 4}, {1, 2})
{3, 4}

이것은 기술적으로는 없기 max(a, b) != max(b, a)때문에 1 == True여전히 눈에 띄는 차이가 있습니다.

>>> max(True, 1)
True

>>> max(1, True)
1

1
와우 ... 왜 그래?
Anwarvic

7
float("nan")내장되지 않은 경우 @ stackFF4 무엇입니까? 확실히 내장되어 있습니다.
sanyash

9
@ stackFF4 : float('nan')는 float입니다. 그것은 float바로 거기에 나와 있으므로, 당신이 무엇을 기대했는지 잘 모르겠습니다. type원하는 경우 확인할 수 있습니다 .
user2357112는

1
@Anwarvic : 흥미롭게도, 그것은 파이썬이 아니며 실제로 플로트가 하드웨어에서 구현되는 방식입니다. NaN은 거의 모든 프로그래밍 언어의 모든 것과 거짓을 비교합니다.
Mooing Duck

2
@Nat : 그러나 아무도 예외를 원하지 않습니다. 이 max동작은 비교가 거짓 일 때 항상 생성되는 것과는 달리 C fmax(NaN 전파를 보장하는)와 다르게 정의 하는 결과입니다. NaN은 "정렬되지 않은"wrt입니다. 다른 숫자도 마찬가지 입니다. 항상 거짓입니다.a<b ? b : aaa < NaNNaN < b
Peter Cordes

5

에 따르면 문서를 사용하여 max세트에 정의되지 않은 결과를 :

따라서, 집합은 전체 순서에 따라 달라지는 함수에 대한 적절한 인수가 아닙니다 (예 : min (), max () 및 sorted ()는 입력 목록으로 주어진 목록이 정의되지 않은 결과를 생성 함).

다음은 예입니다.

a = {1, 2}
b = {2, 3}
print(max(b, a) != max(a, b))

산출

True

여기서 "정의되지 않은 결과"는 다른 언어보다 파이썬에서 더 안전 할 수 있습니다. 아니 코 악마는 가능성이없고, 아마 예외가 발생하지 않습니다. 대부분 임의의 값 (for minmax) 또는 ordering (for sorted)을 반환합니다 .
Blckknght
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.