Python:从列表中优雅地打印所有*剩余的*元素

时间:2014-01-21 18:30:20

标签: python

我正在寻找在更换其中一个元素后打印元素列表的最正确方法。我可以做如下,但它显然是凌乱的。

#!/usr/bin/python

import sys

file = open(sys.argv[1])

for line in file:
    cols = line.split('\t')

    if(float(cols[2]) > 97):
        print line
    else:
        print cols[0] + "\tNo_Match\t" + cols[2] + "\t" + cols[3] + "\t" + cols[4] + "\t" + .....  + "\t" +cols[20]
编辑:我刚才意识到情况会更糟,因为我错过了+“\ t”

2 个答案:

答案 0 :(得分:4)

这给代码的最后一行提供了相同的行为:

print cols[0] + "\tNo_match\t" + ''.join(cols[2:])

要匹配修改后的代码版本:

print cols[0] + "\tNo_match\t" + '\t'.join(cols[2:])

答案 1 :(得分:3)

您可以使用字符串的join方法打印列表:

cols[1] = "No_Match"
print '\t'.join(cols)

这将打印由'\ t'分隔的cols的所有条目。

注意我是如何首先替换cols的元素1的。如果你不想这样做,你可以做任何一个

print '\t'.join(cols[0:1]+['No_Match']+cols[2:])

print '\t'.join([x if i != 1 else 'No_Match' for i, x in enumerate(cols)])