如何在主列表中定位子列表内元素所属的子列表位置?
解决方法
你的问题出在all_orders.index(Burger)的逻辑错误——index()方法是在列表里找完全等于目标值的元素,但all_orders里的元素是子列表(比如customer_order1是[Burger]),不是Burger本身,所以肯定找不到,报错是正常的。
要找到包含Burger的子列表在all_orders中的索引,可以用下面的代码:
方法一:循环遍历(新手友好)
target_index = None # 用enumerate同时获取索引和子列表 for idx, sublist in enumerate(all_orders): # 检查子列表里是否有Burger if Burger in sublist: target_index = idx break # 找到后直接退出循环 if target_index is not None: # 这里写你后续的逻辑,比如用target_index代替原来的0 print(f"Burger所在子列表的索引是:{target_index}") # 示例后续逻辑: # if target_index == 0: # print(" ") # for y in range(int(number_of_orders1[0])): # print("🍔", end=" ", flush=True) else: print("未找到包含Burger的子列表")
方法二:一行式(进阶写法)
如果想简化代码,可以用生成器表达式结合next():
# 找到第一个包含Burger的子列表索引,找不到返回None target_index = next((idx for idx, sublist in enumerate(all_orders) if Burger in sublist), None)
补充说明
你之前用的any({Burger}.issubset(sublist) for sublist in all_orders)能检测到存在,是因为issubset()是检查Burger是否在子列表里,和直接找元素是否等于Burger是两回事。
内容的提问来源于stack exchange,提问作者DennyZenny
相关产品推荐
相关产品推荐

