Python - 将值与列表列表的元素进行比较

时间:2018-01-29 21:46:55

标签: python python-3.x list

假设我有这样的清单:

list = [[1],[3],[4],[5],[8],[9],[12],[14],[15]]

然后对于items中的某些range(16),我想将这些items与列表元素进行比较,如果它们是等于做某事。

我最好的尝试我得到了这样的代码:

for f in range(16):
    if any(f == any(list) for x in list):
        print('f: ',f)

在这种情况下,它仅为f == 1打印一次,我希望它为每个相等的元素获取print()。我非常确定我将int与list进行比较,而且我没有得到理想的结果,但在这种情况下,我不知道如何获取内部列表值: - /

2 个答案:

答案 0 :(得分:2)

您可以在此处使用any。您还应该重命名list以避免使用该名称遮蔽内置类型。

l = [[1],[3],[4],[5],[8],[9],[12],[14],[15]]

for f in range(16):
    if any(f in sub_list for sub_list in l):
        print('f:', f)

any接受一个iterable,如果该iterable的任何元素为true,则返回True,否则返回False。我们在这里做的是定义一个生成器理解(f in sub_list...),它检查每个子列表的成员资格。由于any短路(即一旦发现一个是True,它就不会检查元素),使用懒惰的评估迭代器可以节省不必要的工作量。

原始代码中发生的事情是True的数值为1(主要是出于遗留原因)。因此,any(list)始终为Truef == any(list)仅在f1

时才为真

答案 1 :(得分:0)

在这种情况下,您应该尝试使用整数列表。如果不可能,我会使用以下代码:

l = [[1],[3],[4],[5],[8],[9],[12],[14],[15]]
for i in l:
    if i[0] in range(16):
        print(i[0])