我有一个数据列表:
[18.0,18.0,28.35,81.26,1.99,1.3,1.4,1.4,1.4,1.4,14.8,1.78,5.79,21.18,2.54,3.0,1.69,8.11,1.57,1.31,11.19,8.14,1.42,4.72]
我想当其中两个数字的值小于2时,第三个数字存储在另一个列表中。例如,如果前两个数字小于2;第三个数字进入列表,当第三个和第四个数字小于2时,第五个数字也在列表中。 但问题是,如果几个连续系数小于2,程序将难以识别正确的系数。 我的代码是:
for listItrator in listOfCoefficients_float:
if listItrator < lowCoefficientsCounter: #lowCoefficientsCounter: Is equal to 2 as assumed
wait = wait + 1
if wait == wait2: #wait2: This variable is entered by the user, which according to the pattern described at the beginning of the problem, is equal to 2 here
trimmedCofficientsFiller = listOfCoefficients_float.index(listItrator)
finalOutputCofficients_float.append(float(listOfCoefficients_float[trimmedCofficientsFiller + 1])) #Save the next coefficient in the list
wait = 0
elif listItrator >= lowCoefficientsCounter:
wait = 0
输出列表为: [1.4,1.4,1.4,1.19]
而我期望的输出是: [1.4,1.4,14.8,11.19]
在这样的问题中,正如您也注意到的,必须格外小心,以免弄乱您的比较以及您正在处理的索引。工作解决方案如下所示:
如果您想保存一些字节,它也会出现在列表理解中:
在这两种情况下,
lst
是您的原始列表我很有信心你能理解,但如果不能,请让我知道,我会补充一些进一步的解释
请注意,正如@MisterMiyagi所说,您可以从
zip
中挤出一些额外的能量,而不是自己enumerat
计算索引,如下所示:在线
您正在查找满足索引的第一个数字,而不是第二个、第三个等实例
1.4
显示多次,因此您的程序总是选择第一个1.4
实例。考虑用索引迭代列表,而不是(例如{{CD3>})相关问题 更多 >
编程相关推荐