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

时间:2016-07-16 04:34:45

标签: python iteration tuples

对元组列表进行排序后,例如:

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)

我真的很困惑,你可以帮忙,建议吗?

2 个答案:

答案 0 :(得分:1)

您可以轻松地使用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)]

您可以查看filter here的文档。 所以,基本上它是filter( some_function(e) , array)它在数组的每个元素e中迭代它并测试它是否满足某些条件。使用通话some_function(e)完成此检查。如果该函数返回True,则保留元素e,否则不保留。

另外,既然你提到你是python新手,我想你可能不知道python中的lambda。所以基本上可以把它们作为一个无衬里的无名功能。您可以将以下内容视为等效:lambda x: print xdef printit(x): print x;您可以查看lambda here

希望有所帮助:)

答案 1 :(得分:1)

如果我正确理解了这些要求,那么这应该符合您的要求:

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)