Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 第二个元素大于阈值的元组拆分列表_Python_List_Python 2.7_Tuples - Fatal编程技术网

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

Python 第二个元素大于阈值的元组拆分列表,python,list,python-2.7,tuples,Python,List,Python 2.7,Tuples,我有一个需要拆分的元组列表,其中元组中的每一个元素都大于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.3

我有一个需要拆分的元组列表,其中元组中的每一个元素都大于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
的索引序列:

enums = [j for j, k in enumerate(zp) if not k[1] in (0,1)]

enums 
[5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 20, 21, 25, 26, 27, 33, 34, 35, 39, 40, 41]
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]
在这里,我开始怀疑我走错了方向,因为我已经绕了好几圈。例如,使用For循环获取
zp
的切片:

enums = [j for j, k in enumerate(zp) if not k[1] in (0,1)]

enums 
[5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 20, 21, 25, 26, 27, 33, 34, 35, 39, 40, 41]
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)]]
您可以使用根据每个元组的第二项大于1的条件对结果进行分组(
lambda x:x[1]>1
)。这将为该条件具有相同结果的每组连续项返回一个组(无论是
True
还是
False
)。然后,我们可以使用列表理解来忽略由于条件为
False
而分组的组,并将这些组转换为条件为
True
的列表

import itertools
A = [list(group) for val, group in itertools.groupby(zp, lambda x: x[1] > 1) if val]

# [[(1.36, 2), (1.37, 3), (1.37, 4), (1.39, 5), (1.38, 6), (1.4, 7), (1.41, 8), (1.42, 9), (1.43, 10)], 
#  [(1.49, 2), (1.5, 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.7, 3), (1.71, 4)]]

你举了一个很好的例子。但是您的示例的预期输出是什么?此信息可以使您更容易理解所需内容。@thiagowfx抱歉,请参阅编辑。无需抱歉,这只是一个建议。很高兴你的问题解决了!好极了,我必须开始钻研新的方法,而不是掠夺。非常感谢。