在找到列表的子列表中是否存在项目之后,查找是否有另一个项目在同一子列表中

时间:2017-04-17 13:00:21

标签: python

我有几个包含多个子列表的列表,其结构如下:

shape_01 = [['Circle', 'Top'], ['Dot', 'Top']]

我创建了一个函数,用于检查某个形状项是否存在并绘制该形状。

def draw_shape(set):
     if any(('Dot') in i for i in set):
     goto(0,0)  
     dot(25)

当输入函数时,这会在0,0处绘制一个点:

draw_shape(shape_01)

我想编辑该功能,以便检查' Top'与形状存在于同一子列表中,然后从(0,0)处的点绘制变为(0,100)。

总结一下我能说的最好的条款,我怎样才能检查两者是否都是“点”。和#39; Top'是否在相同的子列表中,并相应地更改代码?

3 个答案:

答案 0 :(得分:0)

你可以这样做。但是应该说,如果你想添加更多的属性,形状等,这种方法并没有真正扩展。

def goto(*pos): print(pos)
def dot(*params): print(params)

def draw_shape(lst):
    for l in lst:
        if 'Dot' in l:
            if 'Top' in l:
                goto(100, 0)
            else:
                goto(0,0)
            dot(25)
def draw_shape(lst):
    for l in lst:
        if 'Dot' in l and 'Top' in l:
            goto(100, 0)
            dot(25)
        elif 'Dot' in l:
            goto(0,0)
            dot(25)

答案 1 :(得分:0)

要回答关于如何检查子列表是否包含多个值的具体问题,我建议使用一个函数,如下所示:

def any_sublist_contains_all(lists, values_to_find):
    return any(all(value in l for value in values_to_find) for l in lists)

如果values_to_find中的所有值都存在于列表的任何子列表中,则返回True

所以你可以这样做:

if any_sublist_contains_all(set, ('Dot','Top')):
    # dot what you want

答案 2 :(得分:0)

您可以在python中使用集合。

set(sublist).issuperset(['Top', 'Dot'])