2024-09-28 17:17:41 发布
网友
c1是这样的列表列表:
c1
c1=[[1,2,3],[1,2,6],[7,8,6]] for row in c1:
我想知道row[0]是否有变化
row[0]
例如:
在[1, 2, 3]和[1, 2, 6]中,row[0]没有变化
[1, 2, 3]
[1, 2, 6]
然而在[1, 2, 6]和[ 7, 8, 6]中row[0]有变化
[ 7, 8, 6]
我该怎么找零钱? 另外,我想知道更改发生在哪一行
使用变量跟踪上一项。
prev = None for row in c1: if prev is not None and prev != row[0]: # there is a change prev = row[0]
…请确保使用不存在的值作为起始值(如果列表可能包含任何内容,请为第一项使用额外的标志)。如果要将第一行视为更改,请将if更改为:
if
if prev is None or prev != row[0]:
如果你有矩阵数据,你基本上需要第一个“列”的差异。 您可能希望报告更改和更改的位置,并可能希望将其稀疏存储:
c1=[[1,2,3],[1,2,6],[7,8,6]] ans=[] # a list of [indices,differences] col=0 for i in range(len(c1)-1): diff = c1[i+1][col]-c1[i][col] if diff!=0: ans.append([i,diff])
>>> from operator import itemgetter >>> from itertools import groupby >>> c1=[[1,2,3],[1,2,6],[7,8,6]] >>> list(groupby(c1,itemgetter(0))) [(1, <itertools._grouper object at 0xa6f8d0>), (7, <itertools._grouper object at 0xa6f890>)]
这只是说,将c1的元素按每个元素的第一项分组
还可以将结果展开为嵌套列表,以查看如何对项进行分组
>>> [(x,list(y)) for x,y in (groupby(c1,itemgetter(0)))] [(1, [[1, 2, 3], [1, 2, 6]]), (7, [[7, 8, 6]])]
要获取更改行,可以查看结果的第一个元素的长度
>>> len(list(next(groupby(c1,itemgetter(0)))[1])) 2
使用变量跟踪上一项。
…请确保使用不存在的值作为起始值(如果列表可能包含任何内容,请为第一项使用额外的标志)。如果要将第一行视为更改,请将
if
更改为:如果你有矩阵数据,你基本上需要第一个“列”的差异。 您可能希望报告更改和更改的位置,并可能希望将其稀疏存储:
这只是说,将c1的元素按每个元素的第一项分组
还可以将结果展开为嵌套列表,以查看如何对项进行分组
要获取更改行,可以查看结果的第一个元素的长度
相关问题 更多 >
编程相关推荐