반응형
Python 목록 회전
중복 가능성 :
파이썬에서 목록을 이동하는 효율적인 방법
임의의 수의 항목으로 Python 목록을 오른쪽 또는 왼쪽으로 회전하고 싶습니다 (후자는 음수 인수를 사용함).
이 같은:
>>> l = [1,2,3,4]
>>> l.rotate(0)
[1,2,3,4]
>>> l.rotate(1)
[4,1,2,3]
>>> l.rotate(-1)
[2,3,4,1]
>>> l.rotate(4)
[1,2,3,4]
어떻게 할 수 있습니까?
def rotate(l, n):
return l[-n:] + l[:-n]
더 일반적인 방향 :
def rotate(l, n):
return l[n:] + l[:n]
예:
example_list = [1, 2, 3, 4, 5]
rotate(example_list, 2)
# [3, 4, 5, 1, 2]
의 인수 rotate는 목록과 시프트를 나타내는 정수입니다. 이 함수 는 슬라이싱을 사용하여 두 개의 새 목록을 만들고 이러한 목록의 연결을 반환합니다. 이 rotate함수는 입력 목록을 수정하지 않습니다.
해당되는 경우 collections.deque솔루션으로 사용할 수 있습니다 .
import collections
d = collections.deque([1,2,3,4,5])
d.rotate(3)
print d
>>> deque([3, 4, 5, 1, 2])
보너스로 내장 목록보다 빠를 것으로 기대합니다.
다음 함수는 목록 l, x공백을 오른쪽으로 회전합니다 .
def rotate(l, x):
return l[-x:] + l[:-x]
x범위를 벗어난 경우에만 원래 목록을 반환합니다 [-len(l), len(l)]. 의 모든 값에 대해 작동하도록하려면 다음을 x사용하십시오.
def rotate(li, x):
return li[-x % len(li):] + li[:-x % len(li)]
>>> l=[1,2,3,4]
>>> l[1:]+l[:1]
[2, 3, 4, 1]
>>> l=[1,2,3,4]
>>> l[2:]+l[:2]
[3, 4, 1, 2]
>>> l[-1:]+l[:-1]
[4, 1, 2, 3]
일반적으로 n왼쪽 (을 호출 할 때 양수 y rotate) 또는 오른쪽 (음수 y) 으로 회전 하면 다음이 수행됩니다.
def rotate(l, y=1):
if len(l) == 0:
return l
y = y % len(l) # Why? this works for negative y
return l[y:] + l[:y]
회전 방향을 예제와 동일하게하려면 회전을 부정하면 y됩니다.
def rotate(l, y=1):
if len(l) == 0:
return l
y = -y % len(l) # flip rotation direction
return l[y:] + l[:y]
참고 URL : https://stackoverflow.com/questions/9457832/python-list-rotation
반응형
'developer tip' 카테고리의 다른 글
| iOS-UIImageView-UIImage 이미지 방향 처리 방법 (0) | 2020.10.20 |
|---|---|
| MySQL의 자연 정렬 (0) | 2020.10.20 |
| 키를 기반으로 해시 맵 정렬 (0) | 2020.10.20 |
| Int를 Int로 나누고 Int 반환 (0) | 2020.10.19 |
| 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. (0) | 2020.10.19 |