복붙노트

[PYTHON] 파이썬은리스트의 첫번째와 마지막 요소를 조각 낸다.

PYTHON

파이썬은리스트의 첫번째와 마지막 요소를 조각 낸다.

목록의 첫 번째 항목과 마지막 항목 만 잘라내는 방법이 있습니까?

예를 들어; 이것이 내 목록 인 경우 :

>>> some_list
['1', 'B', '3', 'D', '5', 'F']

이 작업을 수행하고 싶습니다 (분명히 [0, -1]은 유효한 구문이 아닙니다).

>>> first_item, last_item = some_list[0,-1]
>>> print first_item
'1'
>>> print last_item
'F'

내가 시도한 몇 가지 :

In [3]: some_list[::-1]
Out[3]: ['F', '5', 'D', '3', 'B', '1']

In [4]: some_list[-1:1:-1]
Out[4]: ['F', '5', 'D', '3']

In [5]: some_list[0:-1:-1]
Out[5]: []
...

해결법

  1. ==============================

    1.일방 통행:

    일방 통행:

    some_list[::len(some_list)-1]
    

    더 나은 방법 (슬라이싱을 사용하지 않지만 읽기 쉽도록) :

    [some_list[0], some_list[-1]]
    
  2. ==============================

    2.그냥 numpy의 멋진 인덱싱을 사용하여이 작업을 수행하는 방법을 보여줄 것이라고 생각했습니다.

    그냥 numpy의 멋진 인덱싱을 사용하여이 작업을 수행하는 방법을 보여줄 것이라고 생각했습니다.

    >>> import numpy
    >>> some_list = ['1', 'B', '3', 'D', '5', 'F']
    >>> numpy.array(some_list)[[0,-1]]
    array(['1', 'F'], 
          dtype='|S1')
    

    [... len (some_list) -1] 메소드가 작동하지 않는 임의의 인덱스 위치도 지원합니다.

    >>> numpy.array(some_list)[[0,2,-1]]
    array(['1', '3', 'F'], 
          dtype='|S1')
    

    DSM이 지적한 것처럼 itemgetter와 비슷한 기능을 수행 할 수 있습니다.

    >>> import operator
    >>> operator.itemgetter(0, 2, -1)(some_list)
    ('1', '3', 'F')
    
  3. ==============================

    3.

    first, last = some_list[0], some_list[-1]
    
  4. ==============================

    4.다음과 같이 할 수 있습니다.

    다음과 같이 할 수 있습니다.

    some_list[0::len(some_list)-1]
    
  5. ==============================

    5.어떤 사람들은 잘못된 질문에 답하고 있습니다. 당신이하고 싶다고 말 했잖아요.

    어떤 사람들은 잘못된 질문에 답하고 있습니다. 당신이하고 싶다고 말 했잖아요.

    >>> first_item, last_item = some_list[0,-1]
    >>> print first_item
    '1'
    >>> print last_item
    'F'
    

    즉, 첫 번째 요소와 마지막 요소를 각각 다른 변수로 추출하려고합니다.

    이 경우 Matthew Adams, pemistahl 및 katrielalex의 답변이 유효합니다. 이것은 단지 복합 할당 일뿐입니다.

    first_item, last_item = some_list[0], some_list[-1]
    

    그러나 나중에 당신은 합병증을 진술한다 : "나는 그것을 같은 줄로 나누고있다. 그리고 그것을 두 번 나누어야한다."

    x, y = a.split("-")[0], a.split("-")[-1]
    

    그래서 두 개의 split () 호출을 피하기 위해서, 당신은 한 번 나누기의 결과 인 목록에서만 조작해야합니다.

    이 경우 한 줄에 너무 많이 입력하면 명확성과 단순성이 손상됩니다. 변수를 사용하여 분할 결과를 보유하십시오.

    lst = a.split("-")
    first_item, last_item = lst[0], lst[-1]
    

    다른 응답은 "목록의 첫 번째 요소와 마지막 요소로 구성된 새로운 목록을 얻는 방법"에 대한 질문에 대답했습니다. 그들은 당신의 질문에주의 깊은 독서에 따라 아마 당신이 원하지 않는 조각을 언급하는 당신의 제목에 영감을 받았을 것입니다.

    AFAIK는 목록의 0 번째와 마지막 요소로 새 목록을 만드는 3 가지 방법입니다.

    >>> s = 'Python ver. 3.4'
    >>> a = s.split()
    >>> a
    ['Python', 'ver.', '3.4']
    
    >>> [ a[0], a[-1] ]        # mentioned above
    ['Python', '3.4']
    
    >>> a[::len(a)-1]          # also mentioned above
    ['Python', '3.4']
    
    >>> [ a[e] for e in (0,-1) ] # list comprehension, nobody mentioned?
    ['Python', '3.4']
    
    # Or, if you insist on doing it in one line:
    >>> [ s.split()[e] for e in (0,-1) ]
    ['Python', '3.4']
    

    목록 이해 방법의 장점은 튜플에있는 인덱스 집합이 임의적이며 프로그래밍 방식으로 생성 될 수 있다는 것입니다.

  6. ==============================

    6.이건 어때?

    이건 어때?

    >>> first_element, last_element = some_list[0], some_list[-1]
    
  7. ==============================

    7.파이썬 3 답변 만 (즉, 조각을 사용하지 않거나 목록의 나머지 부분을 버리지는 않지만 어쨌든 충분할 수 있습니다) 중간과 처음과 마지막을 구분하기 위해 일반화를 풀고 사용합니다 :

    파이썬 3 답변 만 (즉, 조각을 사용하지 않거나 목록의 나머지 부분을 버리지는 않지만 어쨌든 충분할 수 있습니다) 중간과 처음과 마지막을 구분하기 위해 일반화를 풀고 사용합니다 :

    first, *_, last = some_list
    

    인수의 "나머지"를위한 catchall로서의 _의 선택은 임의적이다; 그들은 "내가 신경 쓰지 않는 것들"을 위해 자주 사용되는 _라는 이름으로 저장 될 것입니다.

    다른 많은 솔루션과 달리,이 시퀀스에는 적어도 두 개의 요소가 있어야합니다. 단 하나만 있다면 (처음과 마지막은 동일 할 것입니다), 예외를 발생시킵니다 (ValueError).

  8. ==============================

    8.사실, 나는 그것을 알아 냈다.

    사실, 나는 그것을 알아 냈다.

    In [20]: some_list[::len(some_list) - 1]
    Out[20]: ['1', 'F']
    
  9. ==============================

    9.다음과 같은 것을 사용할 수 있습니다.

    다음과 같은 것을 사용할 수 있습니다.

    y[::max(1, len(y)-1)]
    

    정말로 조각을 사용하고 싶다면. 이것의 장점은 인덱스 오류를 줄 수 없으며 길이가 1 또는 0 인 목록에서도 작동한다는 것입니다.

  10. ==============================

    10.이것은 "슬라이스"는 아니지만 명시 적 색인을 사용하지 않는 일반적인 솔루션이며 문제의 시퀀스가 ​​익명 인 시나리오에서 작동합니다 (따라서 같은 줄에 만들고 슬라이스 할 수 있습니다. 두 번 생성하고 두 번 인덱싱) : operator.itemgetter

    이것은 "슬라이스"는 아니지만 명시 적 색인을 사용하지 않는 일반적인 솔루션이며 문제의 시퀀스가 ​​익명 인 시나리오에서 작동합니다 (따라서 같은 줄에 만들고 슬라이스 할 수 있습니다. 두 번 생성하고 두 번 인덱싱) : operator.itemgetter

    import operator
    
    # Done once and reused
    first_and_last = operator.itemgetter(0, -1)
    
    ...
    
    first, last = first_and_last(some_list)
    

    당신은 그것을 사용할 때 간단히하기 위해 operator import itemgetter 이후에 다음과 같이 인라인 할 수 있습니다 :

    first, last = itemgetter(0, -1)(some_list)
    

    하지만 당신이 getter를 많이 재사용한다면 사전에 한 번만 생성하여 재 작성 작업을 저장 (유용하고 자체적으로 문서화 된 이름을 지정) 할 수 있습니다.

    따라서 특정 사용 사례에 대해 다음을 대체 할 수 있습니다.

    x, y = a.split("-")[0], a.split("-")[-1]
    

    와:

    x, y = itemgetter(0, -1)(a.split("-"))
    

    len 점검이나 이중 색인화 등을 위해 전체 목록을 영구적 인 이름으로 저장하지 않고 한 번만 분리하십시오.

    여러 항목에 대한 itemgetter는 목록이 아닌 튜플을 반환하므로 특정 이름으로 푸는 것이 아니라 실제 목록이 필요한 경우 목록 생성자에서 호출을 마무리해야합니다.

  11. ==============================

    11.일반적인 경우 : 목록의 각 끝에서 N 개의 점을 반환합니다.

    일반적인 경우 : 목록의 각 끝에서 N 개의 점을 반환합니다.

    해답은 처음부터 끝까지 작동하지만 일부는 자신과 마찬가지로 목록의 양쪽에서 상위 N 개 점을 반환 할 수있는보다 일반적인 경우에 적용 할 수있는 솔루션을 찾고 있습니다. 정렬 된 목록 및 5 가장 높은 또는 가장 낮은 원하는), 나는 다음 솔루션을 생각해 냈다 :

    In [1]
    def GetWings(inlist,winglen):
        if len(inlist)<=winglen*2:
            outlist=inlist
        else:
            outlist=list(inlist[:winglen])
            outlist.extend(list(inlist[-winglen:]))
        return outlist
    

    목록 1-10에서 아래쪽 및 위쪽 3 숫자를 반환하는 예제입니다.

    In [2]
    GetWings([1,2,3,4,5,6,7,8,9,10],3)
    
    #Out[2]
    #[1, 2, 3, 8, 9, 10]
    
  12. ==============================

    12.나는 이것이 이것을 할 것 같은 것을 알았다 :

    나는 이것이 이것을 할 것 같은 것을 알았다 :

    list[[0,-1]]
    
  13. ==============================

    13.

    def recall(x): 
        num1 = x[-4:]
        num2 = x[::-1]
        num3 = num2[-4:]
        num4 = [num3, num1]
        return num4
    

    이제 함수 밖에서 변수를 만들고 함수를 호출하십시오.

    avg = recall("idreesjaneqand") 
    print(avg)
    
  14. from https://stackoverflow.com/questions/12218796/python-slice-first-and-last-element-in-list by cc-by-sa and MIT license