program tip

홀수 위치에서 목록 요소 추출

radiobox 2020. 9. 18. 07:59
반응형

홀수 위치에서 목록 요소 추출


그래서 기존 목록의 하위 목록 인 목록을 만들고 싶습니다.

예를 들면

L = [1, 2, 3, 4, 5, 6, 7], 홀수 위치 있는 모든 요소 lili포함 하는 하위 목록을 만들고 싶습니다 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]는 다음을 의미합니다.

  1. 두 번째 요소를 가져옵니다 (그런데 색인에서 판단하면 이상한 요소입니다).
  2. 하나의 요소를 건너 뜁니다 (이 때문에 기본값 step=2인 것과 반대로 하나를 건너 뜁니다 step=1).
  3. 다음 요소를 취하고
  4. 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

forPython에서 카운터 를 사용하여 루프 를 에뮬레이트하는 방법에 대해 자세히 알아보기 : 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

반응형