python中的不规则累积和

python中的不规则累积和,python,sum,Python,Sum,我遇到了一个问题: 假设我有一张名单: list_a = ['one', 'two', 'three', 'four', 'etc.'] 我有一个初始值: x = 50 然后,我希望列表中的每个项目a的x增加10,因此我执行: for i, v in enumerate(list_a): a = x + 10 * (i + 1) print(a) 这将产生如下输出: 60, 70, 80, 90, 100, ... 但是现在,我想要的是,如果列表a中的任何项目等于'3',

我遇到了一个问题:

假设我有一张名单:

list_a = ['one', 'two', 'three', 'four', 'etc.']
我有一个初始值:

x = 50
然后,我希望
列表中的每个项目a
x
增加10,因此我执行:

for i, v in enumerate(list_a):
    a = x + 10 * (i + 1)
    print(a)
这将产生如下输出:

60, 70, 80, 90, 100, ...
但是现在,我想要的是,如果
列表a
中的任何项目等于
'3'
,该项目将
x
增加50,而不是10,那么结果将是:

60, 70, 120, 130, 140, 150, ...

关于如何做的任何线索???

不要在每次迭代中使用
enumerate
并重新计算
a
,您可能希望将
a
作为一个单独的计数器在每次迭代修改的循环之外初始化(如果值为
“三”
则增加30,否则增加10):

否则,您必须循环遍历在每次迭代中已经访问过的列表的整个部分,以计算等于
“三个”
的元素

同样,您当然也可以将该值(看到的
“三”
个数)保留为循环外的计数器(而不是
a
):


要添加到@hlt的答案中,您还可以使用字典存储特殊情况值,然后使用
dict.get
查找所需的增量值,或者在未定义覆盖的情况下检索默认值

a = X
default_increment = 10
increment_map = {'three' : 50}
for value in list_a:
    a += increment_map.get(value, default_increment)
    print(a)

一个
if
语句对于一个特殊情况来说是不错的,但是如果你开始得到2个或3个以上的条件,映射可以帮助你更清楚地阅读。

使用
if
怎么样?
three_counter = 0
for i, v in enumerate(list_a):
    if v == "three":
        three_counter += 1
    # Add 20 for each "three" instead of 30 because the "three"s are also
    # counted in `i`, which adds an additional 10.
    a = X + (i + 1) * 10 + three_counter * 20 
    print(a)
a = X
default_increment = 10
increment_map = {'three' : 50}
for value in list_a:
    a += increment_map.get(value, default_increment)
    print(a)