我有以下元组列表:
a = [(1, 2), (2, 4), (3, 1), (4, 4), (5, 2), (6, 8), (7, -1)]
我想选择元组中第二个值与前一个元素相比增加的元素.例如,我会选择(2,4),因为4优于2,与我选择(4,4)和(6,8)的方式相同.
这可以以比第二个元素明确开始的循环更优雅的方式完成吗?
为了澄清,我想选择第二个元素优于前一个元组的第二个元素的元组.
最佳答案 您可以使用列表推导相当容易地执行此操作:
a = [a[i] for i in range(1, len(a)) if a[i][1] > a[i-1][1]]
这使用范围(1,len(a))从列表中的第二个元素开始,然后将每个元组中的第二个值与前一个元组中的第二个值进行比较,以确定它是否应该在新列表中.
或者,您可以使用zip生成成对的邻近元组:
a = [two for one, two in zip(a, a[1:]) if two[1] > one[1]]