2016-11-13 66 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))if L else None' –

回答

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

您需要更换与如下因素L == intL == str(将始终估价为False):

all(isinstance(item, str) for item in L) # L == str 
all(isinstance(item, int) for item in L) # L == int 
相关问题