我有一个名单,我想一个整数添加到每个值在列表中,过去的第五个值。
PageNumbers = [30, 50, 80, 120, 160, 200, 240, 280]
PageNumbers = [x+100 for x in PageNumbers]
我如何使它PageNumbers = if PageNumber[index] > 5, then [x+100 for x in PageNumbers] else PageNumber[index]
。
我期望的输出[30, 50, 80, 120, 160, 300, 340, 380]
将列表分为两个部分:
PageNumbers = PageNumbers[:5] + [x+100 for x in PageNumbers[5:]]
退房enumerate
抓住这两个指标和价值,同时迭代列表。
这将允许你做类似下面:
PageNumbers = [30, 50, 80, 120, 160, 200, 240, 280]
PageNumbers = [val + 100 if idx > 4 else val for idx, val in enumerate(PageNumbers)]
*请注意,我实际使用idx > 4
这意味着什么过去五日值(0 - 基于索引的),你注意到并在您的示例中使用。你可以,当然,改变使用你想要哪个索引。
见短桩和讨论enumerate
这里:Python using enumerate inside list comprehension
for i in range(5, len(PageNumbers)):
PageNumbers[i] += 100
刚分配回
PageNumbers[5:]=[x +100 for x in PageNumbers[5:]]
PageNumbers
[30, 50, 80, 120, 160, 300, 340, 380]
使用conditional expression和enumerate内置:
>>> PageNumbers = [30, 50, 80, 120, 160, 200, 240, 280]
>>> [x + 100 if i > 4 else x for i, x in enumerate(PageNumbers)]
[30, 50, 80, 120, 160, 300, 340, 380]
使用NumPy的只是一个例子:
import numpy as np
PageNumbers = np.array([30, 50, 80, 120, 160, 200, 240, 280])
PageNumbers[5:] += 100
print(PageNumbers)
#=> [ 30 50 80 120 160 300 340 380]