2016-11-13 121 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 
相關問題