如何迭代一个列表的列表并将每个列表的项目打印为逗号分隔的字符串

4
如果我有一个列表的列表:
x = [['1','2','3'],['4','5','6'],['7','8','9']]

如何迭代这些列表并将它们打印出来以获得以下输出?
1, 2, 3
4, 5, 6
7, 8, 9
6个回答

9

试试这个:

for l in x:
    print ', '.join(map(str, l))

输出:

1,2,3
4,5,6
7,8,9

5

你基本上已经掌握了它:

# python
x = [['1','2','3'],['4','5','6'],['7','8','9']]

for i in x:
  print i[0]
1
4
7

for i in x:
  print i
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']

for i in x[0]:
  print i
1
2
3

嗯,这不完全是我想要的。当我打印时,我希望按照每个列表的原样打印,例如上面的代码将打印1、4和7,但我希望打印1、2、3。 - Tahira
第二个会打印 [1,2,3]。如果你只想看第一个,我马上加上。 - eruciform

2
你可以使用 itertools.chain
from itertools import chain

for i in chain.from_iterable(x):
    print i

我知道这个答案已经有8年了,但在我看来这是最好的方法,而且对我帮助很大! - Emac

1

如果你想逐个处理数组中的每个元素(我假设这里的打印只是一个例子,你实际想要的处理更加复杂),最简单的方法就是不要这样做。显然,你按照某种方式结构化了你的数据,因此你的代码应该反映出来。

使用单个for语句进行处理可以节省非常少的时间,因此我建议使用:

for xlist in x:
    for n in xlist:
        do something with n

信不信由你,让你的代码反映你的数据实际上可以提高代码的可读性。

举个例子,为了按照编辑中指定的要求获得精确的输出:

#!/usr/bin/python

x = [['1','2','3'],['4','5','6'],['7','8','9']]

for xlist in x:
    s = ""
    for n in xlist:
        s = "%s, %c"%(s,n)
    print s[2:]

“信不信由你,让你的代码反映你的数据实际上可以提高代码的可读性。” - Achim

0

仅为概念,实际遍历非常简单:

for i in x: #a list
    for j in i: #elements of the list
        print j

这将在每行打印出1 2 3 4 5 6 7 8 9,每个数字都在一行

您可以根据需要更改模式。


0
x = [['1','2','3'],['4','5','6'],['7','8','9']]

[k for y in x for k in y]

输出:

['1', '2', '3', '4', '5', '6', '7', '8', '9']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接