用于n行的Python zip()

时间:2017-02-14 04:49:30

标签: python list python-3.x merge

鉴于


我有.xlsx格式的表“表1”,其中n行具有要合并/压缩的值。对于这个例子,我正在服用4:

a,b,c,d
e,f,g,h
i,j,k,l
m,n,o,p
.
.
.
n

.xlsx格式的另一个表“表2”,其中包含要在表1中压缩的行数。假设:

1,4
1,2
1,3,4
2,3,4
1,2,3,4
.
.
n

预期产出:

a m,b n,c o,d p
a e,b f,c g,d h
a i m,b j n,c k o,d l p
e i m,f j n,g k o,h l p
a e i m,b f j n,c g k o,d h l p

我试过了:
将表2值存储在列表“table2Values”中,将表1值存储在列表“sheetData”中并执行以下操作:

for l in table2Values:
    temp = sheetData[int(l)]
    c = 1
    if c > 1:
        listNew = [x + " " + y for x, y in zip(temp1, temp)]
        c += 1
    temp1 = temp

finalHeader = listNew

如果只有两行要合并,上面的代码可以正常工作,即table2Values列表中只有2个值。但是,根据表2中指定的值,我无法弄清楚如何合并/压缩两行以上。

1 个答案:

答案 0 :(得分:1)

假设table2Values是一个数字列表列表(来自示例[[1,4],[1,2],[1,3,4],...sheetData的每一行都是一个字符列表(或只是一个字符串),所需的字符串:

for row in table2Values:
    print [" ".join(col) for col in zip(*[sheetData[i-1] for i in row])]

产生(在示例数据上):

['a m', 'b n', 'c o', 'd p']
['a e', 'b f', 'c g', 'd h']
['a i m', 'b j n', 'c k o', 'd l p']
['e i m', 'f j n', 'g k o', 'h l p']
['a e i m', 'b f j n', 'c g k o', 'd h l p']