首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从同一列表中其右侧的每个元素中减去列表中的每个元素

从同一列表中其右侧的每个元素中减去列表中的每个元素
EN

Stack Overflow用户
提问于 2019-05-29 23:19:34
回答 3查看 50关注 0票数 0

我需要操作list来获得减法(从右边的每个数字中减去每个数字)。

我试过使用下面的代码,它与2个for循环一起工作,不管怎样,我可以只用1个for循环,或者以一种比我做的更好的方式。

代码语言:javascript
运行
复制
list=[3,2,5,4,3]
output_list = [0]

    for element in list:
        for i in range(0, length(list)):
            new_element = [ (list[i] - element) if i > index(element) else 0]
            if new_element > 0:
                output_list.append( new_element )

示例:输入[3,2,5,4,3]

[2-3, 5-3, 4-3, 3-3, 5-2, 4-2, 3-2, 4-5, 3-5, 3-4] = [-1, 2, 1, 0, 3, 2, 1, -1, -2, 1]一样减去

值> 0的输出,第一个0来自initialization [0, 2, 1, 3, 2, 1, 1]

EN

回答 3

Stack Overflow用户

发布于 2019-05-29 23:29:35

这应该会生成正确的输出:

代码语言:javascript
运行
复制
values = [3,2,5,4,3]
print([j-i for k,i in enumerate(values[:-1]) for j in values[k+1:] if j-i > 0])
票数 0
EN

Stack Overflow用户

发布于 2019-05-29 23:30:13

试试这个,你可以使用itertools.combinations

代码语言:javascript
运行
复制
>>> from itertools import combinations
>>> from operator import sub
>>> l = [3,2,5,4,3]
>>> [0]+[sub(c[1],c[0]) for c in combinations(l,2) if sub(c[1],c[0]) > 0]
[0, 2, 1, 3, 2, 1]
票数 0
EN

Stack Overflow用户

发布于 2019-05-30 00:27:54

使用列表理解

代码语言:javascript
运行
复制
a=[3,2,5,4,3]
b= [j-a[i] for i,v in enumerate(a) for j in a[i+1:] if j-a[i]>0]

print(b)

输出

代码语言:javascript
运行
复制
 [2, 1, 3, 2, 1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56363839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档