加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 有效地找到列表元素的差异

发布时间:2020-12-20 11:56:52 所属栏目:Python 来源:网络整理
导读:我试图找到列表元素与列表中每个元素的列表的所有元素之间的差异.我想我就是这样描述的?让我们用一个例子代替: idx = [1,4,8,10,22] 基于this question,将元素压缩在一起就足够简单,但这会导致每个元素只进行一次成对比较,而我需要对每个元素进行多次成对
我试图找到列表元素与列表中每个元素的列表的所有元素之间的差异.我想我就是这样描述的?让我们用一个例子代替:

idx = [1,4,8,10,22]

基于this question,将元素压缩在一起就足够简单,但这会导致每个元素只进行一次成对比较,而我需要对每个元素进行多次成对比较.

我的方法是做以下事情:

diffs = [abs(i-j) for i in idx for j in idx]

但这非常低效.计算以下所有元组的差异的最有效方法是什么?

comparisons = [(1,4),(1,8),10),22),(4,(8,22)]

注意:

我更喜欢使用基础Python 2.7的答案,但也想知道如何使用Numpy这样做,因为我确信包使它更容易.

解决方法

你可以写一个发电机:

idx = [1,22]

def differences(nums):
    n = len(nums)
    for i in xrange(n-1):
        for j in xrange(i+1,n):
            yield abs(nums[i]-nums[j])

for d in differences(idx): print d

输出:

3
7
9
21
4
6
18
2
14
12

这会逐个产生差异,内存开销很小.此外,使用@RoryDaulton的想法,这并不打算计算冗余或已知为零的差异.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读