我有这样一个小例子:
mylist = [['chr1', '+', '11873', '14409', 'DDX11L1'], ['chr1', '-', '14361', '16765', 'WASH7P']]
我正在尝试创建一个新的列表列表,其中不是每个子列表,而是3个子列表。实际上new list of list
(称为newmylist)将有6个子列表。
事实上,在newmylist中,除第3列和第4列外,每3个新的子列表都是相似的。第3列是开始,第4列是结束。为了计算newmylist中的第3列和第4列,我将(difference between columns 4 and 3) by 3
除以。
例如,关于mylist
中的第一个sublist
:
(14409 - 11873)/3 = 845
因此,在newmylisy的第一个子列表中,start是11873,end是12718,在第二个子列表中,start是12718,end是13563。在第三个子列表中,start是13563,end是14409。newmylist的第二个3个子列表将由mylist的第二个子列表生成。这是预期的输出
expected output
:
newmylist = [['chr1', '+', '11873', '12718', 'DDX11L1'], ['chr1', '+', '12718', '13563', 'DDX11L1'], ['chr1', '+', '13563', '14409', 'DDX11L1'], ['chr1', '-', '14361', '15162', 'WASH7P'], ['chr1', '-', '15162', '15963', 'WASH7P'], ['chr1', '-', '15963', '16765', 'WASH7P']]
我正试图用下面的代码在python
中实现这一点。此代码不返回我要查找的内容。你知道怎么修吗
start = []
for item in mylist:
start.append(item[2])
end = []
for item in mylist:
end.append(item[3])
diff = []
for item in mylist:
d = item[3]-item[2]/3
diff.append(d)
newmylist = []
for i in range(len(mylist)):
content = [i[0], i[1], start[i], start[i]+diff[i], i[4]]
newmylist.append(content)
你并不是真的将你的列表分成3个独立的列表(在你的最后一个循环中)。一种方法是定义一个名为
split
的函数,它可以按您的需要拆分列表。然后您可以方便地在每个子列表上调用该函数:输出
请注意,如果您愿意,也可以使用列表理解:
相关问题 更多 >
编程相关推荐