如何将这些字符串正确连接在一起(按列然后排)?

时间:2014-11-08 01:09:55

标签: python string join

我有以下一段python代码,我无法以我想要的方式工作。这是代码:

l = [['#' for _ in range(10)] for _ in range(10)]
o = ['\n'.join(r) for r in l]
print ''.join(r for r in o)

这是当前的节目输出:

#
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
##
#
#
#
#
#
#
#
#
#

这是我希望程序输出的内容:

##########
##########
##########
##########
##########
##########
##########
##########
##########
##########

如何更改代码以获得所需的输出?

5 个答案:

答案 0 :(得分:2)

如果你想使用join:

print '\n'.join( ''.join('#' for column in range(10)) for row in range(10))

但更容易:

print ('#'*10 + '\n')*10

答案 1 :(得分:1)

您只是以错误的顺序加入:

l = [['#' for _ in range(10)] for _ in range(10)]
o = [''.join(r) for r in l]    # join the columns
print '\n'.join(r for r in o)  # join the rows

或者更容易阅读:

'\n'.join((''.join(r) for r in l))

或没有l

(('#' * 10 + '\n') * 10)[:-1]

甚至:

'''##########
##########
##########
##########
##########
##########
##########
##########
##########
##########'''

答案 2 :(得分:0)

试试这个:

 for x in range(1,11):
     print "#"*10

输出:

########## 
##########
##########
##########
##########
##########
##########
##########
########## 
##########

说明:如果将一个字符串与一个数字相乘,它将产生重复字符串数量 演示:

 >>> "a"*10
 'aaaaaaaaaa'
 >>> "b"*6
 'bbbbbb'
 >>> 

答案 3 :(得分:0)

l = [['#' for _ in range(10)] for _ in range(10)]
print '\n'.join(''.join(r) for r in l)

答案 4 :(得分:0)

  1. 严格来说,您不需要首先形成字符串l(完全浪费内存),因为您只想打印相同的字符串'##########\n' 10次。 / LI>
  2. print提供了结尾\n,因此您不需要明确join()每行。
  3. 最后,您不需要join()复制字符串n次,只需执行'#' * 10
  4. for _ in range(10):
        print '#' * 10  # all we need is one string-constant of length 10,
                        # if we only want to print it, not store it