所以我想出了一种方法,我不知道是否有更简单的东西。 我将重新键入第一
的问题,如果你有一个列表 a = [1, 2, 3, 7, 10, 11, 12, 18, 20, 21]
问题1)你将如何删除仅领先和连续值的尾部组(导致由具有内和1号定义以21结尾)并以列表b = [7, 10, 11, 12, 18]
结束。
问题 2)你将如何计算这些数字之间的距离并以列表结尾c = [3,4](它将连续数字视为一个块并将10-7 = 3,然后是18-12 = 4)。 我solytion:
consec = [] for key, group in groupby(enumerate(a), lambda i: i[0] - i[1]): consec.append(list(map(itemgetter(1), group))) consecHead = consec[0] consecTail = consec[-1] if 1 in consecHead: consecHeadcheck = consecHead else: consecHeadcheck = [] if 21 in consecTail: consecTailcheck = consecTail else: consecTailcheck = [] b_prior = [x for x in polPos if x not in consecTailcheck] b = [x for x in b_prior if x not in consecHeadcheck] print(b) c = [] for i in range(len(b)): if int(int(b[i+1]) - int(b[i])) !=1: c.append(int(b[i+1]) - int(b[i]) print(c)
你能'sequence.strip( '')'去除前缘和后'.'? – mgilson
没有所有的角色位置在最终输出中都很重要。如果我删除起点和终点,我会改变它们。 –