[python] 파이썬에서 목록을 어떻게 바꿀 수 있습니까?

파이썬에서 다음을 어떻게 할 수 있습니까?

array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)

배열의 요소가 필요하지만 처음부터 끝까지 필요합니다.



답변

reversed이 기능을 다음과 같이 사용할 수 있습니다 .

>>> array=[0,10,20,40]
>>> for i in reversed(array):
...     print(i)

참고 reversed(...)목록을 반환하지 않습니다. 을 사용하여 반전 된 목록을 얻을 수 있습니다 list(reversed(array)).


답변

>>> L = [0,10,20,40]
>>> L[::-1]
[40, 20, 10, 0]

확장 슬라이스 구문은 Python 의 새로운 기능 릴리스에 잘 설명되어 있습니다.2.3.5

의견의 특별한 요청에 의해 이것은 최신 슬라이스 문서 입니다.


답변

>>> L = [0,10,20,40]
>>> L.reverse()
>>> L
[40, 20, 10, 0]

또는

>>> L[::-1]
[40, 20, 10, 0]


답변

이것은 목록을 복제하는 것입니다.

L = [0,10,20,40]
p = L[::-1]  #  Here p will be having reversed list

이것은 목록을 그 자리에서 뒤집는 것입니다.

L.reverse() # Here L will be reversed in-place (no new list made)


답변

파이썬에서 목록을 뒤집는 가장 좋은 방법은 다음과 같습니다.

a = [1,2,3,4]
a = a[::-1]
print(a)
>>> [4,3,2,1]

작업이 완료되었으며 이제 목록이 반전되었습니다.


답변

동일한 목록을 되돌리려면 다음을 사용하십시오.

array.reverse()

다른 목록에 역순으로 목록을 할당하려면 다음을 사용하십시오.

newArray = array[::-1] 


답변

예를 들어, array = array [::-1]과 같은 슬라이싱을 사용하는 것은 깔끔한 트릭이자 매우 Pythonic이지만 초보자에게는 약간 모호합니다. reverse () 메소드를 사용하면 쉽게 읽을 수 있기 때문에 매일 코딩하는 것이 좋습니다.

그러나 인터뷰 질문에서와 같이 목록을 뒤집어 야하는 경우에는 이와 같은 내장 방법을 사용하지 못할 수 있습니다. 면접관은 파이썬 지식의 깊이보다는 문제에 어떻게 접근하는지 살펴보고 알고리즘 접근법이 필요합니다. 클래식 스왑을 사용하는 다음 예제는이를 수행하는 한 가지 방법 일 수 있습니다.

def reverse_in_place(lst):      # Declare a function
    size = len(lst)             # Get the length of the sequence
    hiindex = size - 1
    its = size/2                # Number of iterations required
    for i in xrange(0, its):    # i is the low index pointer
        temp = lst[hiindex]     # Perform a classic swap
        lst[hiindex] = lst[i]
        lst[i] = temp
        hiindex -= 1            # Decrement the high index pointer
    print "Done!"

# Now test it!!
array = [2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]

print array                    # Print the original sequence
reverse_in_place(array)        # Call the function passing the list
print array                    # Print reversed list


**The result:**
[2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]
Done!
[654, 124, 24, 7, 1, 65, 60, 32, 27, 25, 19, 12, 9, 8, 5, 2]

문자열과 튜플은 변경할 수 없기 때문에 튜플이나 문자열 시퀀스에서는 작동하지 않습니다. 즉, 요소를 변경하기 위해 쓸 수 없습니다.