python中的数组叫什么_Python中的数组

不清楚是从匹配的行中请求值,还是需要这些行的索引。我假设你想要指数,这意味着我的答案与J.F.塞巴斯蒂安的答案明显不同,如果你想要这些值,这可能是最好的。在

如果确实需要索引,则不清楚如何处理多个匹配项。如果行[1]==行[2]==行[3],则可以获得[1,2]、[1,3]和[2,3]作为匹配索引,或者您可能只需要其中一个。我假设您只需要其中一个,而哪一个并不特别重要(下面的两个函数总是提供[1,2],而不是其他函数,尽管如果需要,可以修改它们以选择不同的对)。在

下面是一种类似的方法,它显式地循环索引,跳过已经匹配的索引:def findMatchedRowPairsWithoutDuplicates(rows):

matched = set()

result = []

for i in range(len(rows)):

if i in matched:

continue

for j in range(i+1, len(rows)):

if j in matched:

continue

if row[i] == row[j]:

result.append([i,j])

matched.add(i)

matched.add(j)

break # can't match with the current i again!

return result

这里有一个替代实现,它利用排序来更快地查找重复项(时间复杂度O(N log(N)),而不是O(N2),但它要求行值具有部分顺序(即必须定义row1 < row2)。对于大多数类型的数据库值来说,这可能是正确的,但可能并不总是由给定库的实现来保证。理解这段代码的关键在于,相等行的索引在排序后总是在indexes列表中是相邻的,所以我们只需要检查每个相邻的索引对,而不是检查所有的索引对。在

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值