繁体   English   中英

查找列表的最小索引

[英]finding minimum index of a list

嗨,大家好,我需要帮助来创建一个函数,该函数将找到包含字符串列表和整数列表的列表的最小索引。 现在,我可以使用该函数查找整数或字符串列表的最小索引,但不能同时查找两者。

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()

您需要将以下内容替换为L == intL == str (将始终被赋为False):

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

您可以尝试以下方法:

有一个检查内部元素是数字还是字符串的函数。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM