Development Tip

파이썬 배열에서 짝수 / 홀수 줄을 자르는 가장 짧은 방법은 무엇입니까?

yourdevel 2020. 11. 23. 20:16
반응형

파이썬 배열에서 짝수 / 홀수 줄을 자르는 가장 짧은 방법은 무엇입니까?


또는 더 일반적인 질문은 배열을 슬라이스하여 n 번째 줄마다 얻는 방법입니다. 따라서 짝수 / 홀수에 대해서는 한 줄을 건너 뛰고 싶지만 일반적인 경우에는 모든 n- n-1 줄을 건너 뜁니다.


list 에 대해 이야기하고 있다고 가정하면 슬라이스의 단계 (및 시작 인덱스)를 지정합니다. 구문은 list[start:end:step]입니다.

l[2]들어 세 번째 항목을 가져 오기 위해 항목을 가져 오기위한 일반 목록 액세스를 알고있을 것입니다 . 두 개의 숫자와 그 사이에 콜론 을 제공하면 목록에서 가져올 범위지정할 수 있습니다 . 반환 값은 또 다른 목록입니다. l[2:5]를 들어 세 번째에서 여섯 번째 항목을 제공합니다. 단계 크기를 지정하는 선택적 세 번째 숫자를 전달할 수도 있습니다. 기본 단계 크기는 1이며, 이는 모든 항목 (시작 및 끝 인덱스 사이) 을 가져옴을 의미 합니다.

예:

>>> l = range(10)
>>> l[::2]         # even  - start at the beginning at take every second item
[0, 2, 4, 6, 8]
>>> l[1::2]        # odd - start at second item and take every second item
[1, 3, 5, 7, 9]

Python 가이드의 목록을 참조 하세요 .

당신이 모든 얻고 싶다면 n번째 (즉, 첫 번째 요소 제외)리스트의 요소를, 당신은 같은 슬라이스 것이다 l[(n-1)::n].

예:

>>> l = range(20)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

이제 모든 세 번째 요소를 얻는 것은 다음과 같습니다.

>>> l[2::3]
[2, 5, 8, 11, 14, 17]

첫 번째 요소를 포함하려면 l[::n].


이것은 완전한 예로서 나에게 더 많은 것입니다.)

>>> import itertools
>>> ret = [[1,2], [3,4,5,6], [7], [8,9]]
>>> itertools.izip_longest(*ret)
>>> [x for x in itertools.chain.from_iterable(tmp) if x is not None]
[1, 3, 7, 8, 2, 4, 9, 5, 6]

> map(lambda index: arr[index],filter(lambda x: x%n == 0,range(len(arr))))

arr목록은 어디에 있으며 n슬라이스가 필요합니다.

참고 URL : https://stackoverflow.com/questions/4988002/shortest-way-to-slice-even-odd-lines-from-a-python-array

반응형