我想附加到一个新的列表中,只有第三个元素与第一个元组的第三个元素相同的元组

2024-06-25 23:08:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在对元组列表排序之后,例如:

jen =  (34,54,15) , (34,65,15), (34, 78,89) ...

我试图只将包含第一个元组的第三个元素的元组附加到新列表中,例如,新列表必须只包含:

(34,54,15) 
(34,65,15)

这是我的伪代码:

   Salvation_array = []
    For lines in  jen:
    Num = 0
    If jen[0] [:-2] = Num:
    Salvation_array.append(Num)

我真的很困惑,你能帮个忙吗,建议点什么


Tags: 代码in元素列表forif排序array
2条回答

使用filter方法可以很容易地做到这一点

在一行filter调用中:

array1 = [(34,54,15) , (34,65,15), (34, 78,89)]
array2 = filter(lambda element: element[2] == array[0][2], array)
print array2
[(34, 54, 15), (34, 65, 15)]

您可以查看filterhere的文档。 所以,基本上它是做什么的,它遍历数组的每个元素,并测试它是否满足某个条件。这个检查是通过调用some_function(e)完成的。如果该函数返回True,则保留元素e,否则不保留

另外,既然您提到您是python新手,我猜您可能不知道python中的lambda。所以基本上可以把它们作为一行无名函数。您可以认为以下是等价的:lambda x: print xdef printit(x): print x;您可以检查lambdahere

希望有帮助:)

如果我正确理解了要求,这应该可以满足您的要求:

jen = (34,54,15), (34,65,15), (34, 78,89)

salvation_army = [j for j in jen if j[2] == jen[0][2]]

print(salvation_army)

# Output:
# [(34, 54, 15), (34, 65, 15)]

它类似于@Harsh的答案,但是使用列表理解而不是filter(这是品味的问题。)

你想做的是:

salvation_army = []
desired_value = jen[0][2]

for line in jen:
    if line[2] == desired_value:
        salvation_army.append(line)

相关问题 更多 >