我有一份数据清单:
[[0, 3], [1, 2], [2, 1], [3, 0]]
我正在尝试检查是否有任何单个数字等于3,如果是,则返回哪个元素,因此原始列表中的list [0],list [3]等包含此值3.
我已经达到了:
for i in range(0, len(gcounter_selection)):
for x in range(0,len(gcounter_selection)):
if any(x) in gcounter_selection[i][x]==3:
print(i)
我的名单顺便称为gcounter_selection。
但是我遇到了类型错误:
TypeError: argument of type 'int' is not iterable
我尝试过使用生成器表达式,但我无法使用它。
答案 0 :(得分:8)
如果我理解正确,你正在寻找列表理解:
value = 3
lst = [[0, 3], [1, 2], [2, 1], [3, 0]]
items = [x for x in lst if value in x]
print(items)
#[[0, 3], [3, 0]]
要获取元素的位置而不仅仅是元素,请添加enumerate
:
indexes = [n for n, x in enumerate(lst) if value in x]
答案 1 :(得分:1)
原版修正版
gcounter_selection = [[0, 3], [1, 2], [2, 1], [3, 0]]
for i in range(0, len(gcounter_selection)):
if any(x == 3 for x in gcounter_selection[i]):
print(i)
然而,这可以简化为
for i, x in enumerate(gcounter_selection):
if any(y == 3 for y in x):
print(i)
在这种情况下无需any
,只需查看in
for i, x in enumerate(gcounter_selection):
if 3 in x:
print(i)