第二个元素大于阈值的元组拆分列表

2024-09-30 12:35:08 发布

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

我有一个元组列表,需要将其拆分为“元组列表列表”,其中元组中的每一个第二个元素都大于1。从这些元组列表中,我试图计算新列表中第一个元组的第一个元素与新列表中最后一个元组的第一个元素之间的差异。抱歉,如果这看起来很混乱。在

以以下为例:

zp = [(1.31, 0), (1.32, 0),
      (1.33, 0), (1.34, 0),
      (1.35, 1), (1.36, 2),
      (1.37, 3), (1.37, 4),
      (1.39, 5), (1.38, 6),
      (1.40, 7), (1.41, 8),
      (1.42, 9), (1.43, 10),
      (1.44, 0), (1.45, 0),
      (1.46, 0), (1.47, 0),
      (1.48, 1), (1.49, 2),
      (1.50, 3), (1.51, 4),
      (1.52, 0), (1.53, 0),
      (1.54, 1), (1.55, 2),
      (1.56, 3), (1.57, 4),
      (1.48, 0), (1.59, 0),
      (1.60, 0), (1.61, 0),
      (1.62, 1), (1.63, 2),
      (1.64, 3), (1.65, 4),
      (1.66, 0), (1.67, 0),
      (1.68, 1), (1.69, 2),
      (1.70, 3), (1.71, 4)]

从这里,我枚举元组的第二个元素大于等于1的所有位置,并获得zp的索引序列:

^{pr2}$

在这里,我开始怀疑我走错了方向,因为我已经绕了好几圈了。例如,使用For循环获取zp的切片:

for k in range(1, len(enums)):
    if enums[k] - enums[k-1] > 1:
        print "index k-1", k-1, "end if seq: emum[k-1]", enums[k-1], " --", "index k", k, "start if next seq: emum[k-1]", enums[k]

然后从那里,用改变的enum索引对zp进行切片……所以一定有更好的方法,对吗?在

欢迎提出任何建议。在

*编辑

预期结果:

[(1.36, 2),(1.37, 3), (1.37, 4),(1.39, 5), (1.38, 6),(1.40, 7), (1.41, 8),(1.42, 9), (1.43, 10)],
[(1.49, 2),(1.50, 3), (1.51, 4)], 
[(1.55, 2),(1.56, 3), (1.57, 4)],
[(1.63, 2),(1.64, 3), (1.65, 4)],
[(1.69, 2),(1.70, 3), (1.71, 4)]]

Tags: 元素列表forindexif切片序列差异
1条回答
网友
1楼 · 发布于 2024-09-30 12:35:08

您可以使用^{}根据每个元组的第二项是>1(lambda x: x[1] > 1)的条件对结果进行分组。这将为每个连续项集返回一个组,该条件对这些项的结果相同(要么是True要么是False)。然后我们可以使用列表理解来忽略因为条件是False而被分组的组,并将这些组转换为条件为True的列表。在

^{1}$

相关问题 更多 >

    热门问题