返回列表列表中特定符号的位置

时间:2016-10-31 18:46:41

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

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

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开始)。我当前的代码不会查找最接近左上角的字符,因为我不确定如何编程。提前感谢我收到的任何帮助。

2 个答案:

答案 0 :(得分:1)

迭代所有元素直到找到字符的函数。一旦找到它,它就会返回位置。要找到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)  

答案 1 :(得分:0)

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)