【问题标题】:How to check if an element is part of a list of lists and integers?如何检查一个元素是否是列表和整数列表的一部分?
【发布时间】:2014-04-27 19:45:23
【问题描述】:

我需要检查一个元素是否是列表的一部分,但列表看起来像:

>>> lst = [[1,2], 3, [1,2], [1,4]]
>>> possible = [1,4]

我尝试用多个 for 循环检查它,但问题是整数,它不可迭代。

>>> for pos_elem in range(len(possible)):
       for i in lst:
          for j in i:
             if possible[pos_elem] == j:
                print j

是否有代码可以无误地检查 lst 的每个元素?

【问题讨论】:

  • 您能介绍一下您想要输出的内容吗?您是否要检查“可能”列表中的任何元素是否是 lst 的元素,或列表 lst 的任何元素的元素?为了避免您的可迭代问题,您可以检查“i”是否是一个列表并仅在这种情况下对其进行迭代: if isinstance(i, list): for j in i
  • 这个related question 的公认答案可能值得一看。
  • 避免在列表中混合不同的类型。如果您的原始列表是:[[1,2], [3], [1, 2], [1, 4]](注意 [3] 而不是 3),那么答案将非常简单。对于您当前的lstfor j in i 将在遇到3 时引发异常。混合不同的不兼容类型只会增加要处理的案例数量。
  • 感谢 cmets,但我认为将每个整数更改为仅包含整数的列表会非常密集,因为有很多......

标签: python list search for-loop integer


【解决方案1】:
if possible in lst:
    #do something

Python 有成员运算符,用于测试序列中的成员,例如字符串、列表或元组。有两个会员运营商。 innot in

  • in 如果找到指定序列中的变量,则评估为 true 否则为假。
  • not in 如果在 指定顺序,否则为 false。

【讨论】:

  • 您可能想要添加更多解释,并且可能需要添加文档链接。只用代码的答案被看不起。
  • 声音 - 答案已更新。尽管考虑到他使用上面的循环,但他认为他会理解in 场景
【解决方案2】:

你可以使用python内置的type来检查列表中的元素是否是一个列表:

     lst = [[1, 2], 3, [1, 2], [1, 4]]
        possible = [1, 4]


        for element in lst:

            #checks if the type of element is list
            if type(element) == list:
                for x in element:
                    if x in possible:
                        print x
            else:
                if element in possible:
                    print element

打印:

1
1
1
4

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多