我有一个单词列表,即[ cat, dog, bird, horse, pig, duck, frog, chicken, sheep, cow]
我想打印在这样的网格中说出其中的九个:
cat dog horse
bird pig duck
frog chicken sheep
无论如何都这样做? 另外当我让他们打印出一行时,我会在每个项目的末尾得到 \ n 换行符,这非常烦人 - 是否有一个简单的解决方法
答案 0 :(得分:2)
像这样:
li = [
'cat', 'dog', 'bird',
'horse', 'pig', 'duck',
'frog', 'chicken', 'sheep',
'cow'
]
lines = [" ".join(li[x:x+3]) for x in xrange(0, len(li), 3)]
for line in lines:
print line
答案 1 :(得分:0)
我假设那些是字符串?在这种情况下,您可以使用for循环并打印整个字符串减去\ n字符,例如cat [: - 2]。
答案 2 :(得分:0)
您可以通过查找最长的单词(动物名称)并将该长度用作单词之间的填充来实现。以下内容将字符串拆分为3个组。拆分后的任何提醒元素都将被忽略:
animals = ['cat', 'dog', 'bird', 'horse', 'pig', 'duck', 'frog', 'chicken', 'sheep', 'cow']
padding = max(map(len, animals)) + 2
groups = zip(*(iter(animals),) * 3)
for group in groups:
print("".join(("{:%i}" % padding).format(a) for a in group))
答案 3 :(得分:0)
您可以逐步遍历列表,即每行的单词数。
然后,我使用[start:end]
范围选择我想要的列表部分,并使用join()
进行打印,这将加入列表中的所有项目,并在它们之间选择字符串。
然后我继续下一部分。
words = ['a','b','c','d','e','f','g','h','i','j']
def printNum(n, lst):
start = 0
end = start + n
for line in lst[::n]:
print "\t".join(lst[start:end])
start = end
end = start + n
print "3 words per line:"
printNum(3, words)
print "2 words per line:"
printNum(2, words)
输出:
3 words per line:
a b c
d e f
g h i
j
2 words per line:
a b
c d
e f
g h
i j
答案 4 :(得分:0)
还有一个解决方案:
-a, --attach=[] Attach to STDIN, STDOUT or STDERR