Python基于奇偶值更改列表元素

2024-09-28 19:24:27 发布

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

应该根据值是奇数还是偶数来更改列表的值。 错误:

list assignment index out of range 

代码:

def list_mangler(list_in):
    for i in list_in:
        if i % 2 == 0:
            list_in[i] = i * 2
        else:
            list_in[i] = i * 3
    return list_in



list_mangler([1, 2, 3, 4])

Tags: of代码in列表forindexdef错误
2条回答

问题是for i in list_in在列表中产生,而不是索引。要获取索引,请使用enumerate

for i, val in enumerate(list_in):
    if i % 2 == 0:
        list_in[i] = val * 2
    ...

如果您想返回一个新的列表(而不是对旧列表进行变异),那么使用条件表达式的列表理解可以很好地实现:

[val * 3 if val % 2 else val * 2 for val in list_in]

当然,如果您真的需要,您可以将它与切片分配一起使用来变异list_in

list_in[:] = [val * 3 if val % 2 else val * 2 for val in list_in]

作为一种风格,如果函数的目的是就地修改列表,则不要返回列表。这就清楚地表明,输入是经过变异的,而不是返回一个以某种方式根据原始数据构建的新列表。

您需要使用enumerate,因为for i in list返回的是元素而不是索引。你知道吗

for index, val in enumerate(list_in):
        if val % 2 == 0:
            list_in[index] = val* 2
        else:
            list_in[index] = val * 3
    return list_in

相关问题 更多 >