복붙노트

[PYTHON] 목록에있는 값의 일부보다 큰 목록의 목록을 반환합니다.

PYTHON

목록에있는 값의 일부보다 큰 목록의 목록을 반환합니다.

나는 다음 목록을 가지고있다.

j=[4,5,6,7,1,3,7,5]

[5,5,6,7,7]을 j의 원소가 5보다 크거나 같게 돌려주는 가장 간단한 방법은 무엇입니까?

해결법

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

    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. ==============================

    2.목록 이해력을 사용할 수 있습니다.

    목록 이해력을 사용할 수 있습니다.

    [x for x in j if x >= 5]
    
  3. ==============================

    3.목록 이해는 간단한 접근법입니다.

    목록 이해는 간단한 접근법입니다.

    j2 = [x for x in j if x >= 5]
    

    또는 동일한 결과에 대해 필터를 사용할 수 있습니다.

    j2 = filter(lambda x: x >= 5, j)
    

    원래 목록 j는 수정되지 않았습니다.

  4. ==============================

    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. ==============================

    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이 다시 이긴다 !!

  6. from https://stackoverflow.com/questions/4587915/return-list-of-items-in-list-greater-than-some-value by cc-by-sa and MIT license