在列表中的列表中添加换行符
有没有人知道怎么把一个包含多个列表的列表,变成我下面画的那种样子?
这个包含多个列表的列表看起来是这样的:
list = [0, [~, ~, ~], 1, [~, ~, ~], 2, [~, ~, ~] ]
而我想要的输出结果是:
0 ~ ~ ~
1 ~ ~ ~
2 ~ ~ ~
我看到其他人问过类似的问题,不过他们的子列表里只有一个元素,而且每个子列表前面也没有整数元素,所以他们用下面的代码来得到我需要的结果:
"\n".join(item[0] for item in list)
我不太确定怎么修改上面的代码来解决我具体的问题。我试着改过:
item[0] to item[0:len(sub_list)]
还有很多其他的尝试,但都没有成功。(我对Python还不太熟悉)
如果有人能帮忙,我会非常感激。谢谢。
8 个回答
1
首先,我们来纠正一下这个定义:
lst = [0, ['~', '~', '~'], 1, ['~', '~', '~'], 2, ['~', '~', '~']]
请记住,千万不要把 list
用作变量名。这样会覆盖掉内置的 list
函数。
为了让这个更容易处理,可以把它转换成一个简单的列表的列表:
lst = [[lst[i]] + lst[i+1] for i in xrange(0, len(lst), 2)]
然后用 join
把它连接起来:
print "\n".join([" ".join(map(str, x)) for x in lst])
2
虽然没有其他回答那么聪明或简洁,但绝对容易理解:
# This function is taken from
# http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python
def chunks(l, n):
""" Yield successive n-sized chunks from l.
"""
for i in xrange(0, len(l), n):
yield l[i:i+n]
my_list = [0, ['~', '~', '~'], 1, ['~', '~', '~'], 2, ['~', '~', '~'] ]
paired = chunks(my_list, 2)
for index, lst in paired:
print index, ' '.join(lst)
6
你可以总是通过每次跳过一个来进行明确的循环:
el = [0, ['~', '~', '~'], 1, ['~', '~', '~'], 2, ['~', '~', '~'] ]
for i in range(0, len(el), 2):
print el[i], " ".join(el[i+1])
我现在想不出更聪明的方法了。