파이썬에서 수행 한 여러 골프에서 고정 값은 부울에 의해 선택된 두 변수 중 하나에 할당됩니다. 선택한 변수는 주어진 값으로 덮어 쓰고 다른 변수는 변경되지 않습니다.
17 자
if b:y=z
else:x=z
조건부 값을 할당하는 것은 쉽지만 조건부 변수를 할당하는 것은 어려워 보입니다. 내가 놓친 더 짧은 방법이 있는지 궁금합니다.
이 경우 쉬울 것이다 x,y
대신 목록이었다 L
, 그러나 상황이 쓰는만큼 변수를 참조해야합니다 가정 L[0]
및 L[1]
금지입니다. 변환하는 데 시간이 너무 오래 걸림 :
20 자
L=[x,y];L[b]=z;x,y=L
내가 아는 가장 빠른 방법은 파이썬 2 exec
를 사용하는 것입니다.
16 자, 파이썬 2 :
exec"xy"[b]+"=z"
튜플 선택은 더 길어 보입니다.
18, 19, 18, 18 자 :
x,y=b*(x,z)or(z,y)
x,y=[z,x,y,z][b::2]
y,x=[y,z,x][b:b+2]
y,x,*_=[y,z,x][b:] # Python 3
더 짧은 방법이나 문자 절약 최적화가 있습니까? Falsey 또는 Truthy뿐만 아니라 b
is 0
또는 이라고 가정 할 수 있으며 1
도움이되는 경우 데이터 유형 및 값에 대해 가정 할 수도 있습니다.
왜 스택 오버플로에서 그렇지 않습니까?
—
BobTheAwesome
@BobTheAwesome 나는 이것을하는 좋은 방법을 요구하지 않고 단지 짧은 방법을 요구합니다.
—
xnor
x,y=C(x,y,z,b)
(14 자)이 구현을의 본문으로 푸시 할 수 있습니다C
.