홀수 위치에서 목록 요소 추출
그래서 기존 목록의 하위 목록 인 목록을 만들고 싶습니다.
예를 들면
L = [1, 2, 3, 4, 5, 6, 7]
, 홀수 위치 에 있는 모든 요소 li
를 li
포함 하는 하위 목록을 만들고 싶습니다 L
.
내가 할 수있는 동안
L = [1, 2, 3, 4, 5, 6, 7]
li = []
count = 0
for i in L:
if count % 2 == 1:
li.append(i)
count += 1
그러나 동일한 작업을 더 적은 수의 단계로 효율적으로 수행 할 수있는 다른 방법이 있는지 알고 싶습니다.
해결책
그래 넌 할수있어:
l = L[1::2]
그리고 이것이 전부입니다. 결과에는 다음 위치에 배치 된 요소가 포함됩니다 ( 0
기반이므로 첫 번째 요소는 position에 0
, 두 번째 요소는 1
등).
1, 3, 5
따라서 결과 (실제 숫자)는 다음과 같습니다.
2, 4, 6
설명
[1::2]
끝은 목록 슬라이스의 표기법입니다. 일반적으로 다음과 같은 형식입니다.
some_list[start:stop:step]
생략 start
하면 기본값 ( 0
)이 사용됩니다. 따라서 첫 번째 요소 ( 0
인덱스가 0
기반 이므로 위치 )가 선택됩니다. 이 경우 두 번째 요소가 선택됩니다.
두 번째 요소가 생략 되었기 때문에 기본값이 사용됩니다 (목록의 끝). 따라서 목록은 두 번째 요소에서 끝까지 반복 됩니다 .
세 번째 인수 ( step
) 도 제공했습니다 2
. 즉, 한 요소가 선택되고 다음 요소는 건너 뜁니다.
요약하자면이 경우 [1::2]
는 다음을 의미합니다.
- 두 번째 요소를 가져옵니다 (그런데 색인에서 판단하면 이상한 요소입니다).
- 하나의 요소를 건너 뜁니다 (이 때문에 기본값
step=2
인 것과 반대로 하나를 건너 뜁니다step=1
). - 다음 요소를 취하고
- 2 ~ 3 단계를 반복합니다. 목록 끝에 도달 할 때까지
편집 : @PreetKukreti는 Python의 목록 슬라이싱 표기법에 대한 또 다른 설명에 대한 링크를 제공했습니다. 여기를보세요 : Python의 슬라이스 표기법 설명
기타-카운터 교체 enumerate()
코드에서 명시 적으로 카운터를 만들고 늘립니다. Python에서는 다음을 사용하여 반복 가능한 일부를 열거 할 수 있으므로 필요하지 않습니다 enumerate()
.
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
위의 내용은 사용했던 코드와 정확히 동일한 용도로 사용됩니다.
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
for
Python에서 카운터 를 사용하여 루프 를 에뮬레이트하는 방법에 대해 자세히 알아보기 : Python 'for'루프에서 인덱스 액세스
를 들어 홀수 위치, 당신은 아마 원하는 :
>>>> list_ = list(range(10))
>>>> print list_[1::2]
[1, 3, 5, 7, 9]
>>>>
I like List comprehensions because of their Math (Set) syntax. So how about this:
L = [1, 2, 3, 4, 5, 6, 7]
odd_numbers = [y for x,y in enumerate(L) if x%2 != 0]
even_numbers = [y for x,y in enumerate(L) if x%2 == 0]
Basically, if you enumerate over a list, you'll get the index x
and the value y
. What I'm doing here is putting the value y
into the output list (even or odd) and using the index x
to find out if that point is odd (x%2 != 0
).
list_ = list(range(9)) print(list_[1::2])
참고URL : https://stackoverflow.com/questions/12433695/extract-elements-of-list-at-odd-positions
'program tip' 카테고리의 다른 글
ImageView 배율 TOP_CROP (0) | 2020.09.18 |
---|---|
페이지로드가 완료되었는지 감지 (0) | 2020.09.18 |
화면 하단에서 레이아웃을 위로 슬라이드 (0) | 2020.09.18 |
Laravel Eloquent "IN"쿼리를 만드는 방법은 무엇입니까? (0) | 2020.09.18 |
C ++ 03에서 'auto'키워드를 사용하는 이유가 있습니까? (0) | 2020.09.18 |