나는 그물 에서이 문제에 대한 좋은 해결책을 찾지 못했습니다 (아마도 스위치, 위치, 목록 및 Python이 모두 과부하 된 단어이기 때문에).
다소 간단합니다.이 목록이 있습니다.
['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
나는의 위치를 전환하고 싶습니다 'password2'
그리고 'password1'
그들은 바로 옆에 서로에게있어 유일한 것으로, 자신의 정확한 위치를 모르고 – password2
처음이다.
나는 다소 오래 걸리는 목록 첨자 로이 작업을 수행했지만 조금 더 우아한 것을 생각 해낼 수 있을지 궁금해 했습니까?
답변
i = ['title', 'email', 'password2', 'password1', 'first_name',
'last_name', 'next', 'newsletter']
a, b = i.index('password2'), i.index('password1')
i[b], i[a] = i[a], i[b]
답변
간단한 파이썬 스왑은 다음과 같습니다 :
foo[i], foo[j] = foo[j], foo[i]
이제 당신이해야 할 일은 무엇인지 파악하는 i
것입니다 index
.
i = foo.index("password2")
답변
귀하의 사양이 주어지면 슬라이스 할당을 사용합니다.
>>> L = ['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
>>> i = L.index('password2')
>>> L[i:i+2] = L[i+1:i-1:-1]
>>> L
['title', 'email', 'password1', 'password2', 'first_name', 'last_name', 'next', 'newsletter']
슬라이스 할당의 오른쪽은 “반전 슬라이스”이며 철자를 지정할 수도 있습니다.
L[i:i+2] = reversed(L[i:i+2])
더 많은 것을 읽을 수 있다면,
답변
어떻게 더 길어질 수 있을까
tmp = my_list[indexOfPwd2]
my_list[indexOfPwd2] = my_list[indexOfPwd2 + 1]
my_list[indexOfPwd2 + 1] = tmp
임시 저장소를 사용하는 단순한 스왑입니다.
답변
for i in range(len(arr)):
if l[-1] > l[i]:
l[-1], l[i] = l[i], l[-1]
break
마지막 요소가 위치의 요소보다 큰 경우 i
둘 다 스왑됩니다.
답변
예를 들어 다음을 사용할 수 있습니다.
>>> test_list = ['title', 'email', 'password2', 'password1', 'first_name',
'last_name', 'next', 'newsletter']
>>> reorder_func = lambda x: x.insert(x.index('password2'), x.pop(x.index('password2')+1))
>>> reorder_func(test_list)
>>> test_list
... ['title', 'email', 'password1', 'password2', 'first_name', 'last_name', 'next', 'newsletter']
답변
나는 파이썬 전문가가 아니지만 시도해 볼 수 있습니다.
i = (1,2)
res = lambda i: (i[1],i[0])
print 'res(1, 2) = {0}'.format(res(1, 2))
위와 같이 o / p를 줄 것이다 :
res(1, 2) = (2,1)