逐行打印嵌套列表 - Python
Posted
技术标签:
【中文标题】逐行打印嵌套列表 - Python【英文标题】:Print a nested list line by line - Python 【发布时间】:2015-08-11 20:54:40 【问题描述】:A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
我正在尽力打印A
的表格:
1 2 3
2 3 4
4 5 6
那是在不同的行中,但是如果没有不同行中的所有元素,我将无法这样做。到目前为止,这是我的代码:
for r in A:
for t in r:
print(t,)
print
这是我的输出:
1
2
3
2
3
4
4
5
6
这看起来很简单,我认为稍作改动就可以了。谢谢!
【问题讨论】:
在下面查看我的单线解决方案。它不必很复杂 【参考方案1】:for r in A:
print '%d %d %d' % tuple(r)
【讨论】:
【参考方案2】:print
没有尾随逗号将打印一个换行符。
for r in A:
for t in r:
print t,
print
【讨论】:
【参考方案3】:如果您使用的是 Python 3.x:
print(*(' '.format(*r) for r in A), sep='\n')
或:
print(*('%d %d %d' % tuple(r) for r in A), sep='\n')
如果没有,您可以从__future__
模块中导入 Python 3.x 的打印函数。
【讨论】:
【参考方案4】:使用简单的 for 循环和 " ".join()
将嵌套列表中的每个 int
映射到带有 map()
的 str
。
示例:
>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... print(" ".join(map(str, xs)))
...
1 2 3
4 5 6
7 8 9 10
这里的区别是我们可以支持任意长度的内部列表。
您的示例未按预期工作的原因是因为您的内部循环正在迭代子列表的每个元素;
for r in A: # r = [1, 2, 3]
for t in r: # t = 1 (on first iteration)
print(t,)
print
print()
默认情况下会在末尾打印换行符,除非您使用:print(end="")
我相信如果您使用的是 Python 2.x,print t,
会起作用。例如:
>>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
... for x in xs:
... print x,
... print
...
1 2 3
4 5 6
7 8 9 10
但是print(x,)
不会像你想要的那样工作; Python 2.x 或 3.x
【讨论】:
【参考方案5】:方法一:
我们可以使用列表推导和.join()
运算符。
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
print ' '.join(str(x) for x in item)
1 2 3
2 3 4
4 5 6
方法二:
>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
>>> for item in my_list:
for x in item:
print x,
print
1 2 3
2 3 4
4 5 6
带有逗号的内部print
确保内部列表的元素打印在一行中。
外部print
确保对于下一个内部列表,它会在下一行打印。
【讨论】:
【参考方案6】:Jim Fasarakis Hilliard 在Print list of lists in separate lines 中回答了同样的问题。
在 Python 3.x 中我们可以使用:
A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
for i in A:
print(*i)
而对应的输出是:
1 2 3
2 3 4
4 5 6
【讨论】:
【参考方案7】:for [a,b,c] in A:
print(a,b,c)
这可能会有所帮助。 但是如果列表中有更多元素,或者嵌套列表中的元素是可变的,这将不起作用。 下面的代码将在单行中打印嵌套列表的所有元素。
for b in A:
for p in b:
print(p,end=" ")
print()
【讨论】:
【参考方案8】:使用yield from
lst = [[1, 3, 4], [2, 5, 7]]
def f(lst ):
yield from lst
for x in f(lst):
print(*x)
1 3 4
2 5 7
[Program finished]
【讨论】:
【参考方案9】:试试这一款
[print(a) for a in A];
我爱一个班轮!喜欢就给个赞吧
A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
[print(a) for a in A];
[1, 2, 3]
[2, 3, 4]
[4, 5, 6]
如果您不想在打印输出中看到[]
,请执行
[print(*a) for a in A];
A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
[print(*a) for a in A];
1 2 3
2 3 4
4 5 6
【讨论】:
以上是关于逐行打印嵌套列表 - Python的主要内容,如果未能解决你的问题,请参考以下文章
Python - 将字典列表附加到嵌套的默认字典时出现关键错误