Python在边列表中搜索列表

2024-04-19 21:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能做到以下几点:

very_special = ["special"]
my_list = ["stuff", very_special]
if "special" in my_list:
     print ("Found it")

我想知道您是否可以通过某种方式来实现这一点,让代码检查整个过程,包括列表中的列表。你知道吗


Tags: 代码in列表if过程my方式it
3条回答

如果嵌套只有一层深,则可以在外部列表中的每个元素上循环:

for elem in my_list:
  if elem == "special" or (isinstance(elem, collections.Iterable) and "special" in elem):
    print("Found it.")

如果要处理任意嵌套,首先需要将它们展平(如Flatten (an irregular) list of lists):

def flatten(lst):
  for elem in lst:
    if isinstance(elem, collections.Iterable) and not isinstance(elem, (str, bytes)):
      yield from flatten(elem)
    else:
      yield elem

if "special" in flatten(my_list):
    print ("Found it")

这里的另一个用户建议递归…这可能是对他所要求的东西的过度杀戮。你也可以看看这些东西。你知道吗

very_special = ["special"]
my_list = ["stuff", very_special]

if "special" in my_list:
     print("Found it")

for item in my_list:
    if isinstance(item, list) and "special" in item:
        print("Found it nested inside")

您可以通过使用递归来实现这一点。大致如下:

very_special = ["special"]
my_list = ["stuff", very_special]

def nested_list_search(lst, term):
    for ele in lst:
        if isinstance(ele, list):
            nested_list_search(ele, term)
        else:
            if ele == term:
                print("Found it")

nested_list_search(my_list, "special")
>>> Found it

相关问题 更多 >