[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.일방 통행:
일방 통행:
some_list[::len(some_list)-1]
더 나은 방법 (슬라이싱을 사용하지 않지만 읽기 쉽도록) :
[some_list[0], some_list[-1]]
-
==============================
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.
first, last = some_list[0], some_list[-1]
-
==============================
4.다음과 같이 할 수 있습니다.
다음과 같이 할 수 있습니다.
some_list[0::len(some_list)-1]
-
==============================
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.이건 어때?
이건 어때?
>>> first_element, last_element = some_list[0], some_list[-1]
-
==============================
7.파이썬 3 답변 만 (즉, 조각을 사용하지 않거나 목록의 나머지 부분을 버리지는 않지만 어쨌든 충분할 수 있습니다) 중간과 처음과 마지막을 구분하기 위해 일반화를 풀고 사용합니다 :
파이썬 3 답변 만 (즉, 조각을 사용하지 않거나 목록의 나머지 부분을 버리지는 않지만 어쨌든 충분할 수 있습니다) 중간과 처음과 마지막을 구분하기 위해 일반화를 풀고 사용합니다 :
first, *_, last = some_list
인수의 "나머지"를위한 catchall로서의 _의 선택은 임의적이다; 그들은 "내가 신경 쓰지 않는 것들"을 위해 자주 사용되는 _라는 이름으로 저장 될 것입니다.
다른 많은 솔루션과 달리,이 시퀀스에는 적어도 두 개의 요소가 있어야합니다. 단 하나만 있다면 (처음과 마지막은 동일 할 것입니다), 예외를 발생시킵니다 (ValueError).
-
==============================
8.사실, 나는 그것을 알아 냈다.
사실, 나는 그것을 알아 냈다.
In [20]: some_list[::len(some_list) - 1] Out[20]: ['1', 'F']
-
==============================
9.다음과 같은 것을 사용할 수 있습니다.
다음과 같은 것을 사용할 수 있습니다.
y[::max(1, len(y)-1)]
정말로 조각을 사용하고 싶다면. 이것의 장점은 인덱스 오류를 줄 수 없으며 길이가 1 또는 0 인 목록에서도 작동한다는 것입니다.
-
==============================
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.일반적인 경우 : 목록의 각 끝에서 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.나는 이것이 이것을 할 것 같은 것을 알았다 :
나는 이것이 이것을 할 것 같은 것을 알았다 :
list[[0,-1]]
-
==============================
13.
def recall(x): num1 = x[-4:] num2 = x[::-1] num3 = num2[-4:] num4 = [num3, num1] return num4
이제 함수 밖에서 변수를 만들고 함수를 호출하십시오.
avg = recall("idreesjaneqand") print(avg)
from https://stackoverflow.com/questions/12218796/python-slice-first-and-last-element-in-list by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 장고 관리자에서 기본 응용 프로그램을 제거하십시오 (0) | 2018.11.04 |
---|---|
[PYTHON] 어떻게 파이썬에서 문자열에있는 모든 문자의 인스턴스를 삭제하려면? (0) | 2018.11.04 |
[PYTHON] python zipfile 모듈이 내 파일을 압축하지 않는 것 같습니다. (0) | 2018.11.04 |
[PYTHON] Windows 10의 작업 스케줄러에서 .py 파일 예약 (0) | 2018.11.04 |
[PYTHON] 두 구분자 사이의 단어를 삭제하는 방법? (0) | 2018.11.04 |