需求
key_counts中保存了key和value。生成一個列表,根據(jù)value的數(shù)字,生成value個key。
問題
發(fā)現(xiàn)每循環(huán)一次,生成的新列表末尾就會多一個空值。
代碼
key_counts = [{'key': 'qj', 'value': 3}, {'key': 'wuhan', 'value': 2}, {'key': 'xy', 'value': 2}, {'key': 'zz', 'value': 10}]
total = 17 # 上面字段中數(shù)值的和,初始化一個同樣長度的列表
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)
輸出結(jié)果
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']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', '', '', '', '']
列表末尾,每循環(huán)了一次,都被多增加了一個元素(可能理解錯誤。)
2 回答

三國紛爭
TA貢獻1804條經(jīng)驗 獲得超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]
因為循環(huán)中每次的切片賦值時,都使v1的長度增加了1,所以出現(xiàn)了你疑惑的現(xiàn)象
添加回答
舉報
0/150
提交
取消