programing

목록 안으로 항목을 이동하시겠습니까?

skycolor 2023. 4. 22. 09:10
반응형

목록 안으로 항목을 이동하시겠습니까?

Python에서는 어떻게 아이템을 리스트 내의 특정 인덱스로 이동합니까?

를 사용합니다.insert목록 방식:

l = list(...)
l.insert(index, item)

또는 슬라이스 표기법을 사용할 수도 있습니다.

l[index:index] = [item]

목록에 이미 있는 항목을 지정된 위치로 이동하려면 해당 항목을 삭제하고 새 위치에 삽입해야 합니다.

l.insert(newindex, l.pop(oldindex))

조금 더 짧은 솔루션은 항목을 다른 곳으로 이동하지 않고 끝까지만 이동하는 것입니다.

l += [l.pop(0)]

예를 들어 다음과 같습니다.

>>> l = [1,2,3,4,5]
>>> l += [l.pop(0)]
>>> l
[2, 3, 4, 5, 1]

항목의 위치를 모를 경우 먼저 인덱스를 찾아야 할 수 있습니다.

old_index = list1.index(item)

다음으로 이동합니다.

list1.insert(new_index, list1.pop(old_index))

또는 IMHO를 더 깨끗한 방법으로:

list1.remove(item)
list1.insert(new_index, item)

솔루션은 매우 간단하지만 원래 위치의 인덱스와 새 위치의 인덱스를 알아야 합니다.

list1[index1],list1[index2]=list1[index2],list1[index1]

같은 리스트 내의 아이템을 타임릿과 함께 이동하기 위한 몇 가지 방법을 프로파일 했습니다.j>i 의 경우에 사용하는 것은 다음과 같습니다.

┌──────────┬──────────────────────┐§ 14.4usec │ xx [ i : i ] = x . pop ( j ) 、 ││14 14 . 5usec x[x [ i : i ]= [ x . pop ( j )]│© 15 . 2usec © x . insert ( i , x . pop ( j ) »└──────────┴──────────────────────┘

j<=i:

┌──────────┬───────────────────────────┐14 14.4usec xx [ i : i ]=x[j],;del x[j] │14 14.4usec xx [ i : i ]=[x[j];del x[j] │© 15 . 4usec © x . insert ( i , x [ j ] ; del x [ j ] »└──────────┴───────────────────────────┘

몇 번 정도만 사용해도 큰 차이는 없지만, 수작업으로 분류하는 등 무거운 작업을 하는 경우에는 가장 빠른 것을 선택하는 것이 중요합니다.그렇지 않다면, 저는 당신이 가장 읽기 쉽다고 생각하는 것을 추천하고 싶습니다.

다음과 같은 식으로 표현하고 싶습니다.

>>> l = [1,2,3,4,5]
>>> [*l, l.pop(0)]
[2, 3, 4, 5, 1]
l = list(...) #replace ... with the list contents
if item in l: #Checks if the item to be moved is present in the list
    l.remove(item) #  Removes the item from the current list if the previous line's conditions are achieved
l.insert(new_index,item) # Adds item to new list

순방향(왼쪽에서 오른쪽으로) 스왑의 예를 다음에 나타냅니다.

>>> abc = [1,2,3,4,5]
>>> abc.insert(0, abc.pop(len(abc)-1))

[5, 1, 2, 3, 4]

언급URL : https://stackoverflow.com/questions/3173154/move-an-item-inside-a-list

반응형