首页 > 解决方案 > 如何将 2 个列表配对为 1 个列表

问题描述

我有这样的代码:

def datauji(self):
    uji = []
    for x in self.fiturs:
        a = [x[0],x[-5:]] #I think the problem in this line
        uji.append(a)
    return uji

with open('DataUjiBaru.csv','wb') as dub:
        testing = csv.writer(dub)
        datatest = d.datauji()
        datatest.pop(0)
        for x in datatest:
            testing.writerow(x)

我想配对 self.fiturs 中的值,在 self.fiturs 中:

F37,0,1,0,1,1,1,0,1,0,2,1,0,0,0,1
F10,8,4,3,3,3,6,8,5,8,4,8,4,5,6,4
F8,1,0,2,0,0,0,2,0,0,0,0,0,2,0,0

所以我想配对 index[0] 和 index[-5:] 并将其写入 csv,并且 csv 上的输出如下所示:

F37,"['1', '0', '0', '0', '1']"
F10,"['8', '4', '5', '6', '4']"
F8,"['0', '0', '2', '0', '0']"

我对该csv的期望是这样的:

F37,1,0,0,0,1
F10,8,4,5,6,4
F8,0,0,2,0,0

我该如何解决?

标签: pythonpython-2.7

解决方案


您对代码的问题是正确的,它在以下行中找到:

a = [x[0],x[-5:]]

这将创建如下所示的嵌套项:

['F37', ['1', '0', '0', '0', '1']]

以下是解决此问题的两种方法:

选项 1 - 使用splat*运算符:

a = [x[0],*x[-5:]]

选项 2 - 连接列表的两个部分:

a = x[:1] + x[-5:]

这两个都将删除列表的嵌套,而是为您提供如下所示的行:

['F37', '1', '0', '0', '0', '1']

然后您可以将其写入输出文件。


推荐阅读