假设我有这样的清单:
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进行比较,而且我没有得到理想的结果,但在这种情况下,我不知道如何获取内部列表值: - /
答案 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)
始终为True
,f == any(list)
仅在f
为1
答案 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])