我有几个包含多个子列表的列表,其结构如下:
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'是否在相同的子列表中,并相应地更改代码?
答案 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'])