2014-09-09 2 views
0

는 뭔가 파이썬에서 다른 변수에 대한 할당을 전환 하시겠습니까? 삼항 연산자로?

a = 1 if test else b = 1 

처럼 ( test 일부 부울 값을 가지는 경우), 그러나 이것은 불가능 보인다 (도 python ternary operator with assignment 참조) 말을 파이썬 삼항 연산자를 사용하려고 노력했다. 그래서 제 질문은 : 그것은 실제로 불가능한가요 아니면보다 우아한 방법이 있습니까?

if test: 
    a = 1 
else: 
    b = 1 

감사합니다!

+4

나는 if 문을 사용하는 것이 훨씬 더 읽기 쉽다고 생각합니다. – solarnz

+0

문제는 파이썬에서 할당이 * 문장 *이고 "삼항 연산자"가 * 표현식 * (더 정확하게 조건식이라고 함)이라는 것입니다. 조건부 표현식은 대입 문의 오른쪽 부분을 형성 할 수 있지만 한 행에 두 개의 대입을 결합하는 방법으로 표현식을 사용할 수는 없습니다. – chepner

답변

2

조건부로 한 줄만 지정할 수는 있지만 "우아한"이라고는 생각하지 않습니다.

test = True 
a = 23 
b = 42 
a,b = (1,b) if test else (a,1) 
print (a,b) 

결과 : 다른 방법으로

(1, 42) 

, 당신의 ab 값을 저장하기 위해 사전을 사용하는 것이 좋습니다.

test = True 
d = {"a": 23, "b": 42} 
d["a" if test else "b"] = 1 
print d 
#result: {'a': 1, 'b': 42} 

이름에 의미 적 값이없는 경우 숫자를 목록에 저장하십시오.

test = True 
seq = [42, 23] 
seq[test] = 1 
print seq 
#result: [42, 1] 
+0

그것은 적어도 하나의 라이너입니다 :-) thx – Leolo

관련 문제