2

我有一个数据列表:

[[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

我试过使用生成器表达式,但我也无法让它工作。

4

2 回答 2

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]
于 2013-05-07T11:00:15.927 回答
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)
于 2013-05-07T11:10:16.900 回答