我有一个列表和一个位置。
我想将a
拆分为具有相似值的子列表
子列表中的每个值必须相距1或12(我可以确定这个数字,d
,在本例中是1
)。
因此,在本例中,新列表应为:
a_divided = [[39, 40], [42, 43, 44, 45]]
然后我需要选择包含b
的子列表,该子列表产生a_end = [42, 43, 44, 45]
其他例子:
a = [16, 28, 64, 76, 88]; b = 28; d = 12
-> a_divided = [[16, 28], [64, 76, 88]] -> a_end = [16, 28]
a = [107, 108, 109, 111, 112, 113, 114, 116, 177, 118]; b = 112; d = 1
-> a_divided = [[107, 108, 109], [111, 112, 113, 114], [116, 117, 118]] -> a_end = [111, 112, 113, 114]
我该怎么做
您实际上不需要为此将列表拆分为所有子列表。找到
b
元素的位置,然后得到下面和前面的元素,直到得到每边不是1或12的差值如果需要将列表分解为子列表,可以使用zip()将每个元素与下一个元素进行比较,并生成一个分解索引列表(子列表将拆分的位置)。然后使用这些中断位置作为列表的下标,并形成子列表。最后找到包含
b
的子列表:尽管这不如第一种方法有效,但它更通用,并且可以很容易地适应于支持
b
中有多个a
实例的情况相关问题 更多 >
编程相关推荐