如何同时修改两个相互关联的列表?

2024-10-04 05:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个空白列表:intitialListfinalList,还有一个初始值应该进入initialList和一个样本列表sampleList = [12,3,1,4,25,3,2,22,12,32,34,2,1,5,7]。现在我要做的是编写一个程序,首先在initialList中插入初始值,然后进行一些计算,并在finalList中插入值,然后finalList的第一个值成为initialList的第二个值,然后再进行一些计算,依此类推。这是一种曲折的东西。值以之字形填充。我的做法:

intialList = []
finalList = []
intialValue = 30
eff = 0.25
sampleList = [12,3,1,4,25,3,2,22,12,32,34,2,1,5,7]
for a in sampleList:
    if a < 10:
        intialList.append(intialValue)
        finalList.append(intialValue + intialValue*eff)
    else:
        intialList.append(intialValue)
        finalList.append(intialValue - intialValue*eff)
print("initial list:", intialList)
print("final list:", finalList)

我真的不知道该怎么做。 期望输出:

initial list: [30, 22.5, 28.125, 35.156, 43.954, 32.96, 24.72]
finalist list: [22.5, 28.125, 35.156, 43.945, 32.96, 24.72] 

结果存储在finalList中,首先将initial value存储在initialList的索引0中,然后将来自finalList的最终结果存储在initialList


Tags: 程序列表空白listinitial样本printappend
2条回答

你可以试试这个:

for a in sampleList:
    if a < 10:
        intialList.append(intialValue)
        finalList.append(intialValue + intialValue*eff)
        intialValue += initalValue*eff
    else:
        intialList.append(intialValue)
        finalList.append(intialValue - intialValue*eff)
        intialValue -= initalValue*eff

根据所需的输出,您希望在sampleList迭代期间更改intalValue

finalList = []
intialValue = 30
intialList = [intialValue]

eff = 0.25
sampleList = [12,3,1,4,25,3,2,22,12,32,34,2,1,5,7]


for a in sampleList:
    if a < 10:
        calculated_value = intialValue + intialValue * eff

    else:
        calculated_value = intialValue - intialValue * eff

    intialValue = calculated_value
    finalList.append(intialValue)
    intialList.append(intialValue)

print(intialList)    
print(finalList)

输出:

[30, 22.5, 28.125, 35.15625, 43.9453125, 32.958984375, 41.19873046875, 51.4984130859375, 38.623809814453125, 28.967857360839844, 21.725893020629883, 16.294419765472412, 20.368024706840515, 25.460030883550644, 31.825038604438305, 39.78129825554788]
[22.5, 28.125, 35.15625, 43.9453125, 32.958984375, 41.19873046875, 51.4984130859375, 38.623809814453125, 28.967857360839844, 21.725893020629883, 16.294419765472412, 20.368024706840515, 25.460030883550644, 31.825038604438305, 39.78129825554788]

相关问题 更多 >