我需要操纵列表来减去(从右边的每个数字中减去每个数字)。
我尝试使用下面的代码来处理2个for循环,无论如何我还是只能在1个for循环中做,或者比我做得更好。
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来自初始化[0, 2, 1, 3, 2, 1, 1]
答案 0 :(得分:0)
这应该生成正确的输出:
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])
答案 1 :(得分:0)
尝试一下,您可以使用itertools.combinations
>>> 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]
答案 2 :(得分:0)
使用列表理解
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)
输出
[2, 1, 3, 2, 1]