복붙노트

[PYTHON] 파이썬에서리스트에서 가장 짧은 문자열 찾기

PYTHON

파이썬에서리스트에서 가장 짧은 문자열 찾기

이것은 꽤 간단한 문제처럼 보입니다. 그러나 나는 이해할 수있는 짧고 달콤한 방법을 찾고 있습니다 (이것은 코드 골프가 아닙니다).

문자열 목록이 주어지면 가장 짧은 문자열을 찾는 가장 쉬운 방법은 무엇입니까?

나에게 가장 명백한 방법은 대체로 다음과 같습니다.

l = [...some strings...]
lens = map(l, len)
minlen, minind = min(lens)
shortest = l[minind]

하지만이 문제에 대한 코드가 많은 것 같습니다 (적어도 파이썬에서는).

해결법

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

    1.min 함수에는 각 항목의 "정렬 값"을 결정하는 함수를 지정할 수있는 선택적 매개 변수 키가 있습니다. 우리는 이것을 len 함수로 설정하여 가장 짧은 값을 얻는 것만으로 충분합니다.

    min 함수에는 각 항목의 "정렬 값"을 결정하는 함수를 지정할 수있는 선택적 매개 변수 키가 있습니다. 우리는 이것을 len 함수로 설정하여 가장 짧은 값을 얻는 것만으로 충분합니다.

    strings = ["some", "example", "words", "that", "i", "am", "fond", "of"]
    
    print min(strings, key=len) # prints "i"
    
  2. ==============================

    2.선형 시간 소요 :

    선형 시간 소요 :

       reduce(lambda x, y: x if len(x) < len(y) else y, l)
    
  3. ==============================

    3.나는 정렬 된 (l, key = len) [0]

    나는 정렬 된 (l, key = len) [0]

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

    4.잠재적 인 대답 :

    잠재적 인 대답 :

    l = [...some strings...]
    l.sort(key=len)
    shortest = l[0]
    

    그러나 이것은 불필요한 전체 목록을 정렬한다는 점에서 매우 비효율적 일 수 있습니다. 우리는 정말로 최소한을 필요로합니다.

  5. ==============================

    5.

    arr=('bibhu','prasanna','behera','jhgffgfgfgfg')
    str1=''
    
    #print (len(str))
    for ele in arr:
        print (ele,ele[::-1])
        if len(ele)>len(str1):
            str1=ele
        elif len(ele)<len(str2):
            str2=ele
    print ("the longest element is :",str1)
    str2=arr[0]
    for ele in arr:
        if len(ele)<len(str2):
            str2=ele
    
    print ("the shortest element is :",str2) 
    
  6. from https://stackoverflow.com/questions/7228924/how-to-find-the-shortest-string-in-a-list-in-python by cc-by-sa and MIT license