说我有一个二维数组,如:比较2D阵列的第1列并删除重复的Python
array = [['abc',2,3,],
['abc',2,3],
['bb',5,5],
['bb',4,6],
['sa',3,5],
['tt',2,1]]
我想删除任何行,其中第一列重复
即比较阵列[0]和只返回:
removeDups = [['sa',3,5],
['tt',2,1]]
我想应该是这样的: (设定第一栏为TMP变量,比较TMP剩余和#SET阵列从比较返回)
for x in range(len(array)):
tmpCol = array[x][0]
del array[x]
removed = compare(array, tmpCol)
array = copy.deepcopy(removed)
print repr(len(removed)) #testing
其中compare是: (比较TMP其余每个阵列项目的第一个关口,如果比赛中删除,否则返回原来的数组)
def compare(valid, tmpCol):
for x in range(len(valid)):
if valid[x][0] != tmpCol:
del valid[x]
return valid
else:
return valid
我不断收到“索引超出范围”的错误。我尝试了其他方式来做到这一点,但我真的很感激一些帮助!你可以尝试
的人指数超出范围的错误“是因为你设置了' for'循环基于数组的初始长度,但是使用del语句将其缩短。所以,最终你会达到不再存在的指数。你可以使用'while'循环,但即使如此,这段代码也不会完全按照你的想法做。 –