在Python切片中写入数据?
我想在Python中简单地往一个已经填满的列表里写东西。
data = list([0] * 80)
bytes = [72, 101, 108, 108, 111]
print len(data) # 80
data[0:] = bytes
print (len(data)) # 5
我其实只想修改前面5个数字,其他的地方保持为零。但是我做的却是把我的列表缩小了。
那么,有什么正确的方法可以把我的数据复制到列表里,而不让它变小呢?
2 个回答
0
你可以给切片赋值:
data = list([0] * 80)
bytes = [72, 101, 108, 108, 111]
data[:5] = bytes # data[:5] is a slice
print data # [72, 101, 108, 108, 111, 0, ... ]
你用 data[0:] = bytes
(或者 data[:]
)做的事情,就是用 bytes
中的元素来替换整个列表的内容。
3
data = list([0] * 80)
bytes = [72, 101, 108, 108, 111]
data[:5] = bytes
这个切片 data[0:]
代表了整个数组,所以你提供的内容会替换掉整个数组。如果你只想替换数组中的某一部分,你需要明确指定那部分。在这里,我指定了切片 data[:5]
,也就是 data
的前五个元素。如果你想让这个部分可以动态变化,可以用 len(bytes)
来替代 5
。