Python 如何检查列表中某个元素后面的元素的标识?

Python 如何检查列表中某个元素后面的元素的标识?,python,python-3.x,Python,Python 3.x,我正在创建一个函数来检查一个列表是否只包含另一个特定元素右边的特定元素,然后返回一个布尔值。但我很难弄清楚如何定位,我该如何正确地检查列表?“A”的任何右键都必须是,才能返回True。如果有另一个字符串,它将返回False 例如: Area0 = [['.', '.', 'A', 'A', '.', '.']] right\u path\u clear(区域)→ 真的 Area1 = [['.', '.', 'A', 'A', '.

我正在创建一个函数来检查一个列表是否只包含另一个特定元素右边的特定元素,然后返回一个布尔值。但我很难弄清楚如何定位,我该如何正确地检查列表?“A”的任何右键都必须是
,才能返回
True
。如果有另一个字符串,它将返回
False

例如:

Area0   =   [['.',  '.',    'A',    'A',    '.',    '.']]
right\u path\u clear(区域)
→ 真的

Area1   =   [['.',  '.',    'A',    'A',    '.',    'e']]
right\u path\u clear(区域)
→ 假的

到目前为止,我掌握的代码是:

def right_path_clear(area):
    for i in len(area):
        if "A" in area[i] and area == '.':
            return True
那么:

def right_path_clear(area):
    for row in area:
        if ''.join(row).rstrip('.')[-1] == 'A':
            return True
    return False
那么:

def right_path_clear(area):
    for row in area:
        if ''.join(row).rstrip('.')[-1] == 'A':
            return True
    return False

如果您不想使用任何额外的方法,可以创建如下函数:

def right_path_clear(area):
    for row in area:
        for content in row[::-1]: # iterate in reverse order
            if content == '.':    
                continue     # continue iteration till it receives '.'
            elif content == 'A':
                return True  # apart from '.', if 'A' is encounter first, return True
            else:
                return False  # apart from '.', if first encountered value is other than 'A', return False
样本运行:

# Example 1
>>> Area0   =   [['.',  '.',    'A',    'A',    '.',    '.']]
>>> right_path_clear(Area0)
True

# Example 2
>>> Area1   =   [['.',  '.',    'A',    'A',    '.',    'e']]
>>> right_path_clear(Area1)
False

如果您不想使用任何额外的方法,可以创建如下函数:

def right_path_clear(area):
    for row in area:
        for content in row[::-1]: # iterate in reverse order
            if content == '.':    
                continue     # continue iteration till it receives '.'
            elif content == 'A':
                return True  # apart from '.', if 'A' is encounter first, return True
            else:
                return False  # apart from '.', if first encountered value is other than 'A', return False
样本运行:

# Example 1
>>> Area0   =   [['.',  '.',    'A',    'A',    '.',    '.']]
>>> right_path_clear(Area0)
True

# Example 2
>>> Area1   =   [['.',  '.',    'A',    'A',    '.',    'e']]
>>> right_path_clear(Area1)
False

你对“空”的定义是什么?零长度字符串?空格?你是说你只需要知道整行中是否有一个
实例,还是每个
实例的位置?我很困惑。为什么不
返回区[-1]!='。''A'是每种情况的目标变量。'.'表示它是空的,但如果它是来自a-z的任何字母,则表示它已被占用。重要的是它的正确性。如果A旁边的全部为“”,则为True。那么您当前的代码在两个示例中显示了所需的行为?如果
Area1=[[',','A','A','e','.]]
我想问题会出现。你对“空”的定义是什么?零长度字符串?空格?你是说你只需要知道整行中是否有一个
实例,还是每个
实例的位置?我很困惑。为什么不
返回区[-1]!='。''A'是每种情况的目标变量。'.'表示它是空的,但如果它是来自a-z的任何字母,则表示它已被占用。重要的是它的正确性。如果A旁边的全部为“”,则为True。那么您当前的代码在两个示例中显示了所需的行为?如果
Area1=[[',','A','A','A','e','.]]
我想会出现问题吗?谢谢,我更喜欢使用if和elif语句。对我正在做的工作很有效。谢谢,我更喜欢使用if和elif语句的这个。对我所做的很有效。