需求
key_counts中保存了key和value。生成一个列表,根据value的数字,生成value个key。
问题
发现每循环一次,生成的新列表末尾就会多一个空值。
代码
key_counts = [{'key': 'qj', 'value': 3}, {'key': 'wuhan', 'value': 2}, {'key': 'xy', 'value': 2}, {'key': 'zz', 'value': 10}]
total = 17 # 上面字段中数值的和,初始化一个同样长度的列表
v1 = ['' for x in range(total)]
print(v1)
count = 0
for key_count in key_counts:
start = count
end = start + key_count['value'] - 1
count = end + 1
print(start, end, key_count['key'])
xlist = [key_count['key'] for x in range(key_count['value'])]
print(xlist)
v1[start:end] = xlist
print(v1)
输出结果
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']0 2 qj['qj', 'qj', 'qj']['qj', 'qj', 'qj', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']3 4 wuhan['wuhan', 'wuhan']['qj', 'qj', 'qj', 'wuhan', 'wuhan', '', '', '', '', '', '', '', '', '', '', '', '', '', '']5 6 xy['xy', 'xy']['qj', 'qj', 'qj', 'wuhan', 'wuhan', 'xy', 'xy', '', '', '', '', '', '', '', '', '', '', '', '', '']7 16 zz['zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz']['qj', 'qj', 'qj', 'wuhan', 'wuhan', 'xy', 'xy', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', 'zz', '', '', '', '']
列表末尾,每循环了一次,都被多增加了一个元素(可能理解错误。)
2 回答
![?](http://img1.sycdn.imooc.com/545869510001a20b02200220-100-100.jpg)
三国纷争
TA贡献1804条经验 获得超7个赞
end = start + key_count['value'] - 1
xlist = [key_count['key'] for x in range(key_count['value'])]
主要问题出在这两句代码上
每次切片的长度,比xlist长度小1
而且Python的切片赋值,并不要求需要长度一致,例如:
L=[1]
L[:1]=[5,5,5]
因为循环中每次的切片赋值时,都使v1的长度增加了1,所以出现了你疑惑的现象
添加回答
举报
0/150
提交
取消