programing

홀수 위치에서 리스트 요소 추출

starjava 2023. 4. 12. 21:41
반응형

홀수 위치에서 리스트 요소 추출

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

예를들면,

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 첫 에 있습니다.0두 at , at at1 삭제:

1, 3, 5

따라서 결과(숫자)는 다음과 같습니다.

2, 4, 6

설명.

[1::2]마지막은 목록 슬라이싱의 표기법일 뿐입니다.상은,, 음음음음음 음음음음음

some_list[start:stop:step]

★★★★★★★를 생략했을 경우start )0가 사용됩니다. 첫 번째 (에 있음)0이기 0이 경우 두 번째 요소가 선택됩니다.

두 번째 요소가 생략되어 있기 때문에 기본값(목록 끝)이 사용됩니다.따라서 목록은 두 번째 요소에서 끝까지 반복됩니다.

또, 3번째의 인수(step즉 ), ,, ,,2즉, 하나의 요소가 선택되고, 다음 요소는 건너뛰게 됩니다.

이 엔, 이 경우엔요.[1::2]다음과 같습니다.

  1. 두 번째 요소(지수로 판단하면 이상한 요소)를 취한다.
  2. 요소를 step=2죠,로요.step=1(입니다.
  3. 다음 요소를 취합니다.
  4. 리스트의 끝에 도달할 때까지, 순서 2-3을 반복합니다.

편집: @PreetKukreti는 Python의 목록 슬라이싱 표기법에 대한 다른 설명을 위한 링크를 제공했습니다.여기를 참조: Python의 슬라이스 표기법을 설명합니다.

-를 타타 - 음음음음음음음음으로 .enumerate()

코드에서는 카운터를 명시적으로 작성 및 증가시킵니다.Python 에서는, 다음과 같이 반복할 수 있기 때문에, 이것은 필요 없습니다.

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]
>>>>

수학(세트) 구문 때문에 리스트 컴플리션을 좋아합니다.그럼 이건 어때?

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]

기본적으로 목록을 열거하면 인덱스를 얻을 수 있습니다.x그리고 가치y제가 여기서 하고 있는 것은 가치 있는 그대로 두는 것입니다.y출력 목록(짝수 또는 홀수)에 포함시키고 인덱스를 사용합니다.x그 점이 이상한지 아닌지를 알아내다.x%2 != 0).

를 사용할 수도 있습니다.itertools.islice를 작성할 필요가 없는 경우list단, 홀수/짝수 요소를 반복하고 싶을 뿐입니다.

import itertools
L = [1, 2, 3, 4, 5, 6, 7]
li = itertools.islice(l, 1, len(L), 2)

비트 AND 연산자를 사용할 수 있습니다.&:

>>> x = [1, 2, 3, 4, 5, 6, 7]
>>> y = [i for i in x if i&1]
[1, 3, 5, 7]

그러면 목록의 이상한 요소가 표시됩니다.홀수 인덱스에서 요소를 추출하려면 위의 몇 가지 변경만 하면 됩니다.

>>> x = [10, 20, 30, 40, 50, 60, 70]
>>> y = [j for i, j in enumerate(x) if i&1]
[20, 40, 60]

설명.

Bitwise AND 연산자는 1과 함께 사용되며, 이 연산자가 작동하는 이유는 이진수로 쓸 때 홀수가 1로 첫 번째 자리수를 가져야 하기 때문입니다.확인합시다.

23 = 1 * (2**4) + 0 * (2**3) + 1 * (2**2) + 1 * (2**1) + 1 * (2**0) = 10111
14 = 1 * (2**3) + 1 * (2**2) + 1 * (2**1) + 0 * (2**0) = 1110

값이 홀수인 경우 AND 연산에서는 1만 반환됩니다(2진수에서 1은 마지막 자리 1도 포함).

자세한 내용은 Python Bitwise Operator 페이지를 참조하십시오.

추신: 데이터 프레임에서 홀수 열과 짝수 열을 선택하려면 이 방법을 사용할 수 있습니다.얼굴 키포인트의 x좌표와 y좌표가 x1, y1, x2열로 주어졌다고 칩시다.각 이미지의 폭 및 높이 값으로 x 및 y 좌표를 정규화하려면 다음을 수행합니다.

for i in range(df.shape[1]):
    if i&1:
        df.iloc[:, i] /= heights
    else:
        df.iloc[:, i] /= widths

이는 질문과는 정확히 관련이 없지만 데이터 과학자와 컴퓨터 비전 엔지니어에게 이 방법은 유용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/12433695/extract-elements-of-list-at-odd-positions

반응형