※ 引述《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)