Skip to main content
 首页 » 编程设计

python之在 Python 中搜索值时出错

2025年05月04日32虾米姐

我有一个包含以下值的链表:

switch_list = [[4, 1, 2, 2], 
               [4, 2, 3, 2], 
               [3, 1, 1, 3], 
               [3, 2, 4, 2], 
               [1, 3, 3, 1], 
               [1, 2, 2, 1],  
               [2, 1, 1, 2], 
               [2, 2, 4, 1]] 

我的目标是将一个整数与所有链表的第一个值进行比较,然后返回一个具有过滤值的新列表。

示例:我想要 switch_list 中第一个数字等于 4 的所有值,那么函数将返回:

[[4, 1, 2, 2], [4, 2, 3, 2],] 

这是我的程序:

def bucket(value, input):  
 
    output = [] 
 
    for i in input: 
        if i[0][0] == value: 
            output.append(i) 
 
    return output 

这是输出错误:

File "matrix_optimizate.py", line 63, in bucket 
  if i[0][0] == value: 
TypeError: 'int' object has no attribute '__getitem__' 

请您参考如下方法:

您已经在外部列表上进行迭代,因此不需要两次索引查找。

for i in input: 
    if i[0] == value: 
        output.append(i) 

此外,还有一种更优雅的方法可以使用 filter 来做到这一点:

def bucket(input, value): 
    return filter(lambda x: x[0] == value, input) 

此时您可能甚至不需要拥有它,因为它有自己的功能。

最后,您还可以使用列表推导式:

[i for i in input if i[0] == value]