python,zip:丢弃额外的元素

时间:2015-11-25 03:19:52

标签: python python-3.x python-3.5

我想为.txt生成优惠券号码,我在调用时将元素数量设置为参数。

我使用zip()迭代写入两列中的.txt。但是当我设置一个奇数时,zip总是丢弃一个元素。

这是我的代码:

for i, j in zip(coupon[0::2], coupon[1::2]):
    w.writelines(j + '\t' + i + '\n')

如何处理?

此外,如果我尝试连续10列,如何在这里写?

for a, b, c, ....j in ~~:

这将是愚蠢的,我无法输入\t 9次。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用内置帮助中的打印功能的文件选项:

  

打印(...)
     打印(值,...,sep ='',结束='\ n',文件= sys.stdout,flush = False)

     

默认情况下将值打印到流或sys.stdout      可选的关键字参数:
      file :类似文件的对象(流);默认为当前的sys.stdout       sep :在值之间插入字符串,默认为空格       end :在最后一个值后附加的字符串,默认为换行符       flush :是否强制刷新流。

print(j, i, sep='\t', end='\n', file = w)

答案 1 :(得分:1)

您可以单步执行并切掉要加入的块。

以下函数将按制表符分隔的列打印数据,或将其写入传递的文件:

import sys

def write_cols(data,n,f = sys.stdout):
    for chunk in (data[i:i+n] for i in range(0,len(data),n)):
        print('\t'.join(chunk), file = f)

例如,如果data = ['a','b','c','d','e','f','g','h']则:

>>> write_cols(data,3)
a   b   c
d   e   f
g   h

>>> f = open("testfile.txt",'w')
>>> write_cols(data,3,f)
>>> f.close()

会将相同的输出发送到该文件。