【发布时间】:2016-12-19 01:02:10
【问题描述】:
您好,我对以下代码有一个非常奇怪的问题:
def splice_into_blocks(s,bs):
blocklist = []
if (len(s)%bs):
s = s+'0'*(bs-len(s)%bs)
for i in range((len(s)/bs)+1):
blocklist.append(list(s[bs*(i):bs*(i+1)]))
del blocklist[-1]
return blocklist
bl = splice_into_blocks(crypt, 4)
# print bl
def byte_transpose(blocklist):
bs = len(blocklist[0])
blocklist_t = [['0']*len(blocklist)]*bs
for k1,i in enumerate(blocklist):
# for k2,j in enumerate(i):
# blocklist_t[k2][k1] = j
blocklist_t[0][k1] = i[0]
print blocklist_t
byte_transpose(bl)
具体在一行
blocklist_t[0][k1] = i[0]
我的直觉是,这只会写入 blocklist_t 中索引为 0 的列表(因此在我的情况下,是 4 个中的第一个),而其他的则不理会。但是,它将相同的值写入:
- 0, k1
- 1, k1
- 2, k1
- 3, k1
我的实际目标是使用我注释掉的两行来转置这个嵌入列表。
任何和所有帮助表示赞赏。
【问题讨论】:
标签: python python-2.7 list enumerate