邮件列表的元组

时间:2016-04-26 01:23:25

标签: python functional-programming zip unzip

我正在用文件中的数据做一些事情,我已经用它的信息压缩了每一列,但现在我想要结合其他文件的信息(我也把信息压缩了),我不知道如何解压缩并将其组合在一起。

编辑: 我有几个zip对象:

l1 = [('a', 'b'), ('c', 'd')] # list(zippedl1)
l2 = [('e', 'f'), ('g', 'h')] # list(zippedl1)
l3 = [('i', 'j'), ('k', 'm')] # list(zippedl1)

我希望解压缩如下:

unzipped = [('a', 'c', 'e', 'g', 'i', 'k'), ('b', 'd', 'f', 'h', 'j', 'm')]

我不想将压缩结构转换为列表,仅仅是出于内存原因。我搜索过,但没有找到能帮到我的东西。希望你能帮助我! [抱歉我的英语不好]

2 个答案:

答案 0 :(得分:0)

您需要先连接列表:

>>> l1 = [('a', 'b'), ('c', 'd')]
>>> l2 = [('e', 'f'), ('g', 'h')]
>>> l3 = [('i', 'j'), ('k', 'm')]
>>> zip(*(l1 + l2 + l3))
[('a', 'c', 'e', 'g', 'i', 'k'), ('b', 'd', 'f', 'h', 'j', 'm')]

答案 1 :(得分:0)

我相信您想压缩解压缩的chain

    FileWriter outputChar = new FileWriter(new File ("fileresult.txt"));
    Random random = new Random();
    for(int i = 1 ; i <= 50 ; i++){
        int min = 1;
        int max = 100;
        int number = random.nextInt(max - min + 1) + min;
        outputChar.write(number);
    }
    outputChar.close();

你可以简单地做

# Leaving these as zip objects as per your edit
l1 = zip(('a', 'c'), ('b', 'd'))
l2 = zip(('e', 'g'), ('f', 'h'))
l3 = zip(('i', 'k'), ('j', 'm'))

unzipped = [('a', 'c', 'e', 'g', 'i', 'k'), ('b', 'd', 'f', 'h', 'j', 'm')]

打印:

from itertools import chain
result = list(zip(*chain(l1, l2, l3)))

# You can also skip list creation if all you need to do is iterate over result:
# for x in zip(chain(l1, l2, l3)):
#     print(x)

print(result)
print(result == unzipped)