我有一个列表,我想在列表中的每个值之后的第五个值之后添加一个整数。
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]
答案 0 :(得分:3)
检出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
,这意味着您在示例中使用并超过了第5个值(基于0索引)。当然,您可以更改为使用所需的任何索引。
在此处查看有关enumerate
的简短文章和讨论:
Python using enumerate inside list comprehension
答案 1 :(得分:2)
将列表分为两部分:
PageNumbers = PageNumbers[:5] + [x+100 for x in PageNumbers[5:]]
答案 2 :(得分:1)
for i in range(5, len(PageNumbers)):
PageNumbers[i] += 100
答案 3 :(得分:1)
只需将其分配回
PageNumbers[5:]=[x +100 for x in PageNumbers[5:]]
PageNumbers
[30, 50, 80, 120, 160, 300, 340, 380]
答案 4 :(得分:0)
使用内置的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]
答案 5 :(得分:0)
仅举一个使用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]