列表清单上的这个位置是否有一封信?

时间:2016-11-01 20:20:28

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

我试图编写一个函数来确定列表列表中某个行和列是否存在字母。

def letter_on_spot(row,col,lst):
A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
for row in lst:
    for col in lst:
        if col == A:
            return True
        else:
            return False

这是我到目前为止的代码:

nil

编辑:我在函数外返回错误返回True并且不确定我的函数是否正常工作

4 个答案:

答案 0 :(得分:1)

这里有两个问题。

首先,你不必要地循环;您提供列表的索引,因此您只需要检查包含这些索引的值是否包含在字符串for(auto&& x:y)中。不需要遍历每个元素只是为了检查一个元素;索引列表A

其次,lst将始终失败(除非col == A)。您应该检查col = 'ABCD..yz'是否包含A col运算符的in时比较它们的值。

简而言之,您可以将功能更改为:

def letter_on_spot(row,col,lst):
    A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    return lst[row][col] in A

根据给定索引的内容得到想要的结果 - True / False

理想情况下,应执行一些错误检查,以便现在允许导致IndexError s的索引;玩这些清单' len就此而言:

def letter_on_spot(row,col,lst):
    A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
    if row >= len(lst) or col >= len(lst[row]): 
        return False    
    return lst[row][col] in A

其中,在尝试访问lst之前,通过测试列表lst的长度和子列表lst[row]的长度来检查边界是否可接受。< / p>

答案 1 :(得分:0)

您可以使用索引来访问列表元素:

x = [10, 11, 12, 13]
x[1] # => 11

列表清单同样适用:

lst2 = [['.', 'W', 'W', 'E', 'E'],
        ['.', '.', '.', '.', 'f'],
        ]
lst2[2]    # => ['A', 'A', 'A', '.', 'f']
lst2[2][1] # => 'A' 

现在,您需要做的就是检查符号是否有字符。 Python为此提供了str.isalpha()

lst2[0][1].isalpha() # => True
lst2[1][1].isalpha() # => False

请注意,对于包含多个字符的字符串,str.isalpha()也会返回True(例如"hello".isalpha()返回True)。如果需要考虑,请检查字符串的长度,您可以使用len()

答案 2 :(得分:0)

我不确定您的代码到底出了什么问题,但更短的替代方法如下:

def letter_on_spot(row,col,lst):
    return lst2[row][col].isalpha()

答案 3 :(得分:0)

letter_on_spot(row,col,lst)采用两个整数(希望)和一个列表作为输入

让我们逐步介绍:

for row in lst:

与lst

中每个较小的列表相同
for col in lst:

与lst中每个较小的列表相同 这是你的第一个问题;我们想要通过行的元素,而不是lst

if col == A:

假设我们修复了上述问题,我们是否检查col是否与A相同,还是我们检查col是否 A?

我们可以访问lst的元素并检查它是否包含以下字母:

if lst[row][col] in A:
    return True
else:
    return False