使用一个新值更改列表切片的值

时间:2019-05-23 15:15:51

标签: python slice

我想用定义的值更新Python列表的一部分。我希望避免循环,因为该程序需要尽可能高效。

谢谢

我尝试过:

x = [0]*20
x[10:15] = 1

# and:
x = [0]*20
x[10:15] += 1


# first code gets
TypeError: can only assign an iterable

# second code gets
TypeError: 'int' object is not iterable

2 个答案:

答案 0 :(得分:0)

列表不支持矢量化操作(第二个代码)或多个索引分配(第一个代码)。我想您可能会对在这里使用NumPy数组感兴趣

import numpy as np

x = np.zeros(20)
x[10:15] = 1
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]

x = np.zeros(20)
x[10:15] += 1
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]

尽管如此,如果您要坚持使用列表,则可以使用for循环作为

进行所需的更改。
x = [0]*20
for i in range(10, 15):
    x[i] = 1

答案 1 :(得分:0)

您可以使用列表理解来生成适当大小的源数组

getItem