2016-11-13 2 views
0

안녕하세요 여러분, 나는 문자열 목록과 정수 목록을 모두 포함하는 목록의 최소 색인을 찾는 함수를 만드는 데 도움이 필요합니다. 지금은 정수 또는 문자열 목록의 최소 인덱스를 찾을 수 있지만 동시에 둘 다 찾을 수는 없습니다.목록의 최소 색인 찾기

def find_index_of_min(L): 
    """ 
    Parameter: a list L 
    Returns: the index of the minimum element of the list 
     (returns None if the list is empty) 
    """ 


    if L == []: 
     return None 
    elif L == str: 
     min = 'Z' 
     for i in range(len(L)): 
      if L[i] < min: 
       min = L[i] 
       min_index = i 
     return min_index 
    elif L == int: 
     min = float('inf') 
     for i in range(len(L)): 
      if L[i] < min: 
       min = L[i] 
       min_index = i 
     return min_index 

import sys 
import math 

def main(): 
    """ Read and print a file's contents. """ 

    # filename = str(input('Name of input file: ')) 
    # string = readfile(filename) 
    # print() 
    # print('The original list of cities is:') 
    # for i in range(len(string)): 
    # print(i, ':', string[i], sep="") 

    print(find_index_of_min([])) 
    print(find_index_of_min([3, 2, 1, 0])) 
    print(find_index_of_min(['A', 'Z', 'Y', 'B'])) 
    print(find_index_of_min(['B', 'A', 'Z', 'Y'])) 

main() 
+0

너무 많은 일을. 'min()'이 존재합니다. –

+1

'L.index (min (L))이면 L을 반환합니다. ' –

답변

0

이 작업을 시도 할 수 있습니다 :

는 요소가 내부 숫자 나 문자열 인 경우 확인하는 기능을 가지고.

def isNumber(s): # Helper function to check if it is a Number or a string 
    try: 
     float(s) 
     return True 
    except ValueError: 
     return False 

def find_index_of_min(L): 
    """ 
    Parameter: a list L 
    Returns: the index of the minimum element of the list 
     (returns None if the list is empty) 
    """ 

    if L == []: 
     return None 
    elif isNumber(L[0]): 
     min = float('inf') 
     for i in range(len(L)): 
      if L[i] < min: 
       min = L[i] 
       min_index = i 
     return min_index 
    else: 
     min = 'Z' 
     for i in range(len(L)): 
      if L[i] < min: 
       min = L[i] 
       min_index = i 
     return min_index 


import sys 
import math 

def main(): 
    """ Read and print a file's contents. """ 

    # filename = str(input('Name of input file: ')) 
    # string = readfile(filename) 
    # print() 
    # print('The original list of cities is:') 
    # for i in range(len(string)): 
    # print(i, ':', string[i], sep="") 

    print(find_index_of_min([])) 
    print(find_index_of_min([3, 2, 1, 0])) 
    print(find_index_of_min(['A', 'Z', 'Y', 'B'])) 
    print(find_index_of_min(['B', 'A', 'Z', 'Y'])) 

main() 
1

당신은 folowing와 (항상 False로하여 평가됩니다) L == intL == str를 교체해야 :

all(isinstance(item, str) for item in L) # L == str 
all(isinstance(item, int) for item in L) # L == int