【问题标题】:Returning position of specific symbol in list of lists返回列表列表中特定符号的位置
【发布时间】:2017-03-13 21:56:26
【问题描述】:

对于我正在编写的这个函数,我想返回最靠近列表左上角的特定字符的位置。在不导入模块的情况下以最基本的方式完成此任务会很棒。这是我到目前为止的代码,然后我将更多地解释我正在尝试做的事情

def find_position(symbol,lst): 

# Sample List: [['.','M','M','G','G'],
#               ['.','.','.','.','h'],  
#               ['B','B','B','.','h']]
#
    for sublist in lst:
        for symbol in sublist:
            if symbol == True:
            lst.find(symbol)
        return symbol
            else: 
            return None

所以如果函数被指示查找'.'那么它应该返回 (0,0) 因为它位于第一个列表的第一个位置。如果函数被告知要找到'h',那么它应该返回 (1,4),因为它位于第二个列表的第 4 位(python 从 0 开始)。我当前的代码不会寻找最靠近左上角的字符,因为我不确定如何对其进行编程。提前感谢我收到的任何帮助。

【问题讨论】:

    标签: python list python-3.x position symbols


    【解决方案1】:

    Daniel 的方式在时间执行上要快一些,但这也适用于比较:

    def find_pos(listname, symbol):
        for i in range(len(listname)):
            for j in listname[i]:
                if j == symbol:
                    return i ,listname[i].index(j)
    

    【讨论】:

    • 谢谢,您的代码是否返回括号中的位置?出于某种原因,当我运行您的代码时,它会为该位置返回 None 而不是该位置
    • 确实如此。您是否正确输入了函数执行?例如,如果您的列表名称为“mylist”,则为 find_pos(mylist, ".")
    • 你说得对,我这边有问题,现在它工作得很好。我决定给你最好的答案,因为这更接近我的原始代码
    • 如果您只需要括号,请在 return 语句中编辑 Daniels 代码: return ("({},{})".format(index,i)) 基本上将它们添加到格式代码周围, 更大需求的执行时间最终会显示出真正的差异
    【解决方案2】:

    遍历所有元素直到找到字符的函数。一旦找到它,它就会返回该位置。要找到 psotion,您可以使用 enumerate 函数,它返回一个元组,其中包含一个计数(从 start 默认为 0)和通过迭代序列获得的值

    def find_position(symbol,lst):
        for index, my_list in enumerate(s):
            for i,item in enumerate(my_list):
                if symbol == item:
                    return "{},{}".format(index,i)
        return "Not found"    
    
    s = [['.','M','M','G','G'],
                  ['.','.','.','.','h'],  
                  ['B','B','B','.','h']]
    a =  find_position("h",s)  
    

    【讨论】:

    • 谢谢枚举时s和my_list的值是多少?我不确定枚举的是什么。我想知道你的代码运行良好,所以我可以理解它是如何工作的
    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多