我正在尝试比较列表中的元组列表中的int值。具体来说,我有一个像这样的元组列表:
numbers_tokenized = [('2900', 368),('7,', 378),('2900', 379),('33', 384),('34', 385),('40', 386),('00', 387),('33', 389),('34', 390),('40', 391),('01', 392),('7', 410),('2900', 412),('7', 422),('191', 424),('2900', 425),('33', 428),('34', 429),('40', 430),('00', 431),('33', 433),('34', 434),('40', 435),('01', 436)]
我想做的是检查元组中的第二个元素是否是列表+ 1中元组的元素。例如,上面列表中的384,385,386,387
。
我认为应该完成以下循环。
cons_nums = list()
for x in range(1,len(numbers_tokenized)):
if numbers_tokenized[x][1]-1 == numbers_tokenized[x-1][1]:
cons_nums.append(numbers_tokenized[x-1])
else:
continue
然而,这给了我以下输出,这对我来说没有多大意义。
cons_nums = [('7,', 329),
('7,', 338),
('7,', 349),
('7,', 367),
('7,', 378),
('33', 384),
('34', 385),
('40', 386),
('33', 389),
('34', 390),
('40', 391),
('191', 424),
('33', 428),
('34', 429),
('40', 430),
('33', 433),
('34', 434),
('40', 435)]
我犯了一些明显的错误,或者为什么这不起作用?
编辑:
成功循环cons_nums
看起来像这样:
cons_nums = [('7,', 378),('2900', 379),('33', 384),('34', 385),('40', 386),('00', 387),('33', 389),('34', 390),('40', 391),('01', 392),('191', 424),('2900', 425),('33', 428),('34', 429),('40', 430),('00', 431),('33', 433),('34', 434),('40', 435),('01', 436)]
答案 0 :(得分:0)
我认为这可以满足您的需求:
shifted=zip(numbers_tokenized[1:],numbers_tokenized[:-1])
output=[i[1] for i,j in shifted if i[1]-1==j[1]]
编辑: 这样做,但是为了删除重复项,我使用了不维护订单的集合,如果你想要相同的订单,你可以简单地使用循环或类似的列表理解。
shifted=zip(numbers_tokenized[:-1],numbers_tokenized[1:])
output=[j for i in shifted if i[0][1]+1==i[1][1] for j in i]
output=list(set(output))
答案 1 :(得分:0)
如果你想要的话和循环:
numbers_tokenized = [('2900', 368),('7,', 378),('2900', 379),('33', 384),('34', 385),('40', 386),('00', 387),('33', 389),('34', 390),('40', 391),('01', 392),('7', 410),('2900', 412),('7', 422),('191', 424),('2900', 425),('33', 428),('34', 429),('40', 430),('00', 431),('33', 433),('34', 434),('40', 435),('01', 436)]
cons_nums = list()
for x in range(0,len(numbers_tokenized)-1):
if numbers_tokenized[x][1]+1 == numbers_tokenized[x+1][1]:
if numbers_tokenized[x] not in cons_nums:
cons_nums.append(numbers_tokenized[x])
if numbers_tokenized[x+1] not in cons_nums:
cons_nums.append(numbers_tokenized[x+1])
print(cons_nums)
输出:
[('7,', 378), ('2900', 379), ('33', 384), ('34', 385), ('40', 386), ('00', 387), ('33', 389), ('34', 390), ('40', 391), ('01', 392), ('191', 424), ('2900', 425), ('33', 428), ('34', 429), ('40', 430), ('00', 431), ('33', 433), ('34', 434), ('40', 435), ('01', 436)]