[PYTHON] 목록에있는 값의 일부보다 큰 목록의 목록을 반환합니다.
PYTHON목록에있는 값의 일부보다 큰 목록의 목록을 반환합니다.
나는 다음 목록을 가지고있다.
j=[4,5,6,7,1,3,7,5]
[5,5,6,7,7]을 j의 원소가 5보다 크거나 같게 돌려주는 가장 간단한 방법은 무엇입니까?
해결법
-
==============================
1.목록 이해를 사용하여 목록을 필터링 할 수 있습니다.
목록 이해를 사용하여 목록을 필터링 할 수 있습니다.
j2 = [i for i in j if i >= 5]
예를 들어 실제로 예제와 같이 정렬하려면 sorted를 사용할 수 있습니다.
j2 = sorted(i for i in j if i >= 5)
또는 최종 목록에서 정렬 호출 :
j2 = [i for i in j if i >= 5] j2.sort()
-
==============================
2.목록 이해력을 사용할 수 있습니다.
목록 이해력을 사용할 수 있습니다.
[x for x in j if x >= 5]
-
==============================
3.목록 이해는 간단한 접근법입니다.
목록 이해는 간단한 접근법입니다.
j2 = [x for x in j if x >= 5]
또는 동일한 결과에 대해 필터를 사용할 수 있습니다.
j2 = filter(lambda x: x >= 5, j)
원래 목록 j는 수정되지 않았습니다.
-
==============================
4.원하는 출력이 정렬되기 때문에 정렬해야합니다.
원하는 출력이 정렬되기 때문에 정렬해야합니다.
>>> j=[4, 5, 6, 7, 1, 3, 7, 5] >>> sorted(x for x in j if x >= 5) [5, 5, 6, 7, 7]
-
==============================
5.필터를 사용하십시오 (람충을 사용하는 함수를 사용하지 않고 __le__을 사용하여 짧은 버전 사용).
필터를 사용하십시오 (람충을 사용하는 함수를 사용하지 않고 __le__을 사용하여 짧은 버전 사용).
j2 = filter((5).__le__, j)
예제 (파이썬 3) :
>>> j=[4,5,6,7,1,3,7,5] >>> j2 = filter((5).__le__, j) >>> j2 <filter object at 0x000000955D16DC18> >>> list(j2) [5, 6, 7, 7, 5] >>>
예제 (파이썬 2) :
>>> j=[4,5,6,7,1,3,7,5] >>> j2 = filter((5).__le__, j) >>> j2 [5, 6, 7, 7, 5] >>>
__le__을 사용하십시오.이 것을 권장합니다. 매우 쉽습니다. __le__은 당신의 친구입니다.
원하는 출력으로 정렬하려면 (두 버전 모두) :
>>> j=[4,5,6,7,1,3,7,5] >>> j2 = filter((5).__le__, j) >>> sorted(j2) [5, 5, 6, 7, 7] >>>
정렬 사용
>>> from timeit import timeit >>> timeit(lambda: [i for i in j if i >= 5]) # Michael Mrozek 1.4558496298222325 >>> timeit(lambda: filter(lambda x: x >= 5, j)) # Justin Ardini 0.693048732089828 >>> timeit(lambda: filter((5).__le__, j)) # Mine 0.714461565831428 >>>
그래서 Justin이 이깁니다 !!
숫자 = 1 인 경우 :
>>> from timeit import timeit >>> timeit(lambda: [i for i in j if i >= 5],number=1) # Michael Mrozek 1.642193421957927e-05 >>> timeit(lambda: filter(lambda x: x >= 5, j),number=1) # Justin Ardini 3.421236300482633e-06 >>> timeit(lambda: filter((5).__le__, j),number=1) # Mine 1.8474676011237534e-05 >>>
그래서 마이클이 이겼어 !!
>>> from timeit import timeit >>> timeit(lambda: [i for i in j if i >= 5],number=10) # Michael Mrozek 4.721306089550126e-05 >>> timeit(lambda: filter(lambda x: x >= 5, j),number=10) # Justin Ardini 1.0947956184281793e-05 >>> timeit(lambda: filter((5).__le__, j),number=10) # Mine 1.5053439710754901e-05 >>>
그래서 Justin이 다시 이긴다 !!
from https://stackoverflow.com/questions/4587915/return-list-of-items-in-list-greater-than-some-value by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 클래스 foo와 클래스 foo (객체)의 차이점 (0) | 2018.10.25 |
---|---|
[PYTHON] 파이썬 : 함수에 대한 정보를 얻는 방법? (0) | 2018.10.25 |
[PYTHON] import 문 앞에 pythonpath를 설정하십시오. (0) | 2018.10.25 |
[PYTHON] Python 3 - 4GB보다 큰 바이트 객체를 처리 할 수 있습니까? (0) | 2018.10.25 |
[PYTHON] 파이썬 로그로 두 번 나타나는 로그 메시지 (0) | 2018.10.25 |