【发布时间】:2018-12-12 09:36:10
【问题描述】:
我有一个数组,例如
data = [
[1, 0],
[2, 0],
[3, 1],
[4, 1],
[5, 1],
[6, 0],
[7, 0]]
我希望结果是
verified_data = [[1, 0], [2, 0], [3, 1]]
那么,如果最后一个元素为 0,以及最后 N 个元素是否相同(第一个 1 除外),我该如何删除它们。实现这一目标的正确方法是什么?使用 numpy 也可以。
编辑,因为我已经写了一个解决方案,即使它看起来很丑:
def verify_data(data):
rev_data = reversed(data)
for i, row in list(enumerate(rev_data )):
if row[1] == 0:
del data[- 1]
else:
break
rev_data = reversed(data)
last_same_data = None
for i, row in list(enumerate(rev_data)):
if not last_same_data:
last_same_data = row[1]
continue
if last_same_data == row[1]:
del data[-1]
else:
break
return data
【问题讨论】:
-
结果/解释不清楚。你能详细说明一下吗?
-
你能再解释一下这背后的逻辑吗?我不明白你到底想做什么。在这种情况下,“恒定”是什么意思?
-
不变,我的意思是它不会改变。如果最后一个元素都是 1, 1, 1, 1 那么我只需要第一个 1 的索引并丢弃其余的。对不起,我的解释很糟糕。
-
通过连接,你的意思是删除?第一指数的利益是什么?只是为了重新定位吗?因为没有它,工作会更容易(也更快)。
-
哦,我把这些词弄糊涂了。应该删除,而不是连接。
标签: python arrays algorithm numpy