作者mantour (朱子)
看板Python
标题Re: [问题] 求差值
时间Sat May 29 23:19:55 2010
※ 引述《linsia (コノヤロー)》之铭言:
: 新手问题:
: 如果我有两个数列
: a1 b1 c1 d1
: a2 b2 c2 d2
: 如果我想让他们相减
: 变成
: a3 b3 c3 d3
: (a3=a2-a1)
: 是要使用dictionary 还是list??
: 还是办不到? 我想了好几天了= =
你的问题应该是一开始的变数没有设好
以下提供几个方案
方案一:
改用二个list存这二个数列
也就是你的二个数列改用
a[0] a[1] a[2] a[3]
b[0] b[1] b[2] b[3]
去储存
然後
c=[b[i]-a[i] for i in range(4)]
或是
c=[]
for i in range(4):
c.append(b[i]-a[i])
方案二:
如果你希望a[i],b[i],c[i],d[i]是四个数列(也就是不只到a3,可能还有a4,a5,...)
那如果只有a,b,c,d四个其实也可以直接打
如果a,b,c,d一开始就是长度3的list,可以写成
a[3]=a[2]-a[1]
b[3]=b[2]-b[1]
c[3]=c[2]-c[1]
d[3]=d[2]-d[1]
如果a,b,c,d的长度只有2,可以写成
a.append(a[2]-a[1])
b.append(b[2]-b[1])
以次类推
如果不确定a的长度:
if(len(a)<3):
a[3].append(a[2]-a[1])
else:
a[3]=a[2]-a[1]
以此类推…
但是这样写太累了,可以再用一个list把a,b,c,d包起来
S=[a,b,c,d]
for x in S:
if(len(x)<3):
x[3].append(x[2]-x[1])
else:
x[3]=x[2]-x[1]
方案三:
这应该是最不该出现的情况,如果你的变数名称已经写死了就是
a1 b1 c1 d1
a2 b2 c2 d2
然後差值指定一定要存成a3 b3 c3 d3
其实要做的话是做得到,但是十分不建议这样用:
for x in [a,b,c,d]:
vars()[x+'3']=vars()[x+'2']-vars()[x+'1']
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.113.65
※ 编辑: mantour 来自: 61.57.113.65 (05/29 23:22)
※ 编辑: mantour 来自: 61.57.113.65 (05/29 23:25)