对元组列表进行排序后,例如:
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)
我真的很困惑,你可以帮忙,建议吗?
答案 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 x
和def 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)