Python 我想附加到一个新列表中,仅附加第三个元素与第一个元组的第三个元素相同的元组
对元组列表进行排序后,例如:Python 我想附加到一个新列表中,仅附加第三个元素与第一个元组的第三个元素相同的元组,python,iteration,tuples,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
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)
我真的很困惑,你能帮我吗?建议点什么吗?你可以用
过滤器
方法轻松做到这一点
在一行中过滤器调用:
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)]
您可以查看过滤器
的文档。
所以,基本上是什么过滤器(一些函数(e),数组)
它遍历数组的每个元素e
,并测试它是否满足某些条件。此检查使用调用some_函数(e)
完成。如果该函数返回True
,则保留元素e
,否则不保留
另外,由于您提到您是python新手,我想您可能不知道python中的lambda
。所以基本上可以把它们当作一个线性的无名函数。您可以将以下内容视为等效内容:lambda x:print x
和def print it(x):print x代码>您可以查看关于lambda
希望有帮助:)如果我正确理解了需求,这应该可以满足您的要求:
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的答案,但使用列表理解而不是过滤器。(这是品味的问题。)
更接近于你想做的事情:
salvation_army = []
desired_value = jen[0][2]
for line in jen:
if line[2] == desired_value:
salvation_army.append(line)
为了澄清,“包含第三个元素的元组”是指“第三个元素必须相同”还是“它们必须在任何地方包含第三个元素”?如果您有此(34,54,15)、(34,65,15)、(34,15,89)
则输出应该是什么。仅比较第一个类型的第三个元素。@danidee输出应为(34,54,15)、(34,65,15)。只有这个很好的答案,我应该开始使用列表理解更多!天哪,你用一行代码做了你想做的。非常令人印象深刻,谢谢。如果一个人懂python,我无法想象他会有多危险。谢谢你的提示和指导。确实很有帮助