我想用定义的值更新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
答案 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