파이썬 배열에서 짝수 / 홀수 줄을 자르는 가장 짧은 방법은 무엇입니까?
또는 더 일반적인 질문은 배열을 슬라이스하여 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
'Development Tip' 카테고리의 다른 글
문자열 이름이 주어진 클래스를 어떻게 인스턴스화합니까? (0) | 2020.11.23 |
---|---|
WPF TextBlock에 테두리 추가 (0) | 2020.11.23 |
Scala에서 사용자로부터 입력을받는 방법은 무엇입니까? (0) | 2020.11.23 |
텍스트 파일의 각 줄에있는 문자 수를 인쇄하는 방법 (0) | 2020.11.23 |
Gradle을 통해 테스트하는 동안 로깅 (0) | 2020.11.23 |