복붙노트

[PYTHON] 파이썬 목록에서 두 항목의 위치를 ​​전환하는 방법은 무엇입니까?

PYTHON

파이썬 목록에서 두 항목의 위치를 ​​전환하는 방법은 무엇입니까?

네트워크에서이 문제에 대한 좋은 해결책을 찾을 수 없었습니다. 아마도 스위치, 위치, 목록 및 파이썬이 모두 이러한 오버로드 된 단어이기 때문일 수 있습니다.

그것은 오히려 간단합니다. 저는이 목록을 가지고 있습니다 :

['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']

나는 'password2'와 'password1'의 위치를 ​​바꾸고 싶다 - 정확한 위치를 알지 못한다. 단지 그들이 서로 바로 옆에 있고 password2가 제일 먼저 나온다.

나는 오랫동안 권위있는리스트 구독 (subscripting)으로이 작업을 수행해 왔지만, 좀 더 우아한 것을 생각해 낼 수 있을지 궁금해했다.

해결법

  1. ==============================

    1.

        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]
    
  2. ==============================

    2.간단한 파이썬 스왑은 다음과 같습니다 :

    간단한 파이썬 스왑은 다음과 같습니다 :

    foo[i], foo[j] = foo[j], foo[i]
    

    이제 당신이해야 할 일은 내가 무엇인지 파악하는 것뿐입니다. 인덱스로 쉽게 할 수 있습니다.

    i = foo.index("password2")
    
  3. ==============================

    3.귀하의 사양을 감안할 때, 나는 슬라이스 할당을 사용합니다.

    귀하의 사양을 감안할 때, 나는 슬라이스 할당을 사용합니다.

    >>> 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])
    

    당신이 그것을 더 많이 읽을 수 있다면 많은 사람들이 읽을 수 있습니다.

  4. ==============================

    4.어떻게 오래 갈 수 있을까요?

    어떻게 오래 갈 수 있을까요?

    tmp = my_list[indexOfPwd2]
    my_list[indexOfPwd2] = my_list[indexOfPwd2 + 1]
    my_list[indexOfPwd2 + 1] = tmp
    

    임시 저장소를 사용하는 단순한 스왑 일뿐입니다.

  5. ==============================

    5.예를 들면 다음과 같습니다 :

    예를 들면 다음과 같습니다 :

    >>> 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']
    
  6. ==============================

    6.

    for i in range(len(arr)):
        if l[-1] > l[i]:
            l[-1], l[i] = l[i], l[-1]
            break
    

    이것에 의해, 마지막 요소가 위치 i의 요소보다 큰 경우는 양쪽 모두 스왑됩니다.

  7. ==============================

    7.나는 파이썬 전문가가 아니지만 시도 할 수 : 말하다

    나는 파이썬 전문가가 아니지만 시도 할 수 : 말하다

    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)
    
  8. ==============================

    8.와우! 훨씬 더 많은 표준 (모든 언어에 적용 가능), 간단하고 짧은 방법이 있습니다!

    와우! 훨씬 더 많은 표준 (모든 언어에 적용 가능), 간단하고 짧은 방법이 있습니다!

    x = i[2]; i[2] = i[3]; i[3] = x
    

    단순함은 복잡한 것보다 낫습니다.

    참고 : 위치를 모른다면 :

    index = list.index("password1")  # = 3 in the given list
    
  9. from https://stackoverflow.com/questions/2493920/how-to-switch-position-of-two-items-in-a-python-list by cc-by-sa and MIT license