在Python切片中写入数据?

2 投票
2 回答
1686 浏览
提问于 2025-04-16 22:41

我想在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

撰写回答