2017-02-24 1 views
3

나는 경쟁 프로그램 사이트이고, (나에게)이 이상을 쓴 사람 파이썬 3 코드 발견 : 그것은 'Nothing'를 출력두 대괄호 측 : 이상한 효과

[r,"Nothing"][r==""] 

, r 경우는 빈 문자열

어떻게 호출되며 무엇을 의미합니까? 삼항 연산자처럼 보입니다.

답변

5

어떻게 이것이 호출되며 그 의미는 무엇입니까? 삼항 연산자처럼 보입니다.

Python AFAIK에는 공식 이름이 없습니다. 정말 목록을 색인하는 비열하고 복잡한 방법입니다.

당신은 False입니다 Truerr == '' 경우 r=="""Nothing" 경우 선택합니다; 예를 들어 :

>>> [0, 1][True] 
1 
>>> [0, 1][False] 
0 

True 이후 및 False 때 당신 색인 목록, 각각 10로 해석됩니다.

단지에서 제공하는 조각은 다음 두 가지 요소 [r, "Nothing"] 인덱스를 빈 문자열 [r=='']r의 비교 True/False 결과를 사용하여 임시 목록을 정의합니다.

가장 읽을 수있는 코드가 아니며 사용하지 않을 목록을 만드는 데 가장 좋은 아이디어는 아닙니다. 보다 효율적인

"Nothing" if r == "" else r 

읽기 쉽고 많은 : 그것은 쉽게 조건식에 의해 대체 될 수

%timeit True if False else False 
10000000 loops, best of 3: 32.9 ns per loop 

%timeit [False, True][False] 
10000000 loops, best of 3: 176 ns per loop 

목록과 그것을 첨자 할 필요를 만들 필요가 없습니다; 조건부 및 일부 로딩. 이러한 맥락에서

if (r==""): 
    'Nothing' 
else: 
    r 

False 0으로 사용되고, True 1로서 :

>>> [r,'Nothing'][False] 
'foo' 
>>> [r,'Nothing'][True] 
'Nothing' 

는 다른 언어 'condition'?'if true':'if false' 유사한 한 줄의

1

그것은 번역한다. 가능한 가장 짧은 코드를 생성해야하는 곳은 보통 code golf에서 사용됩니다.

+0

그래 맞아! 그건 까다 롭습니다! 고마워요! –

관련 문제