首页 > 解决方案 > 从其他两个列表的值构建新列表不起作用

问题描述

我有一个问题,无法在论坛内找到答案,所以我希望有人能够帮助我,因为它接缝我自己无法弄清楚:)

def loadData(uid):
    // ...
    return [uid,u'',u'',u'',u'',u'',u'',u'',u'',]

evts = []
uids = [7, 43,]
for uid in uids:
    evts.append(loadData(uid))
tmpdata = [[None] * len(evts)] * len(evts[0])
print tmpdata
for iKey in range(len(tmpdata)):
    for iEvt in range(len(tmpdata[iKey])):
        tmpdata[iKey][iEvt] = evts[iEvt][iKey]
        print iKey, iEvt, tmpdata[iKey]
print tmpdata

Normaly 我想在子列表中创建一个包含每个属性的列表,因此例如 0,0 和 0,1 索引必须是每个数据的 uid 值(7 和 43),但正如您在此处看到的那样,它不起作用通缉....

result:
[[None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None]]
0
0[7, None]
0
1[7, 43]
1
0[u'Matthias Reim & Band', 43]
1
1[u'Matthias Reim & Band', u'Der Nussknacker']

...
[[None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None], [None, None],
 [None, None], [None, None], [None, None], [None, None], [None, None], [None, None]]

我想要这样的结果:

[[7, 43], [u'Matthias Reim & Band', u'Der Nussknacker'], ...]

标签: pythonlistsortingfor-loopcopy

解决方案


tmpdata_surprise = [[None] * len(evts)] * len(evts[0])
tmpdata = [[None]*len(evts)for _ in range(len(evts[0]))]

推荐阅读