Python打印元组列表但不包含括号

3

我有一个元组列表,想要打印出这个列表的扁平化形式。我不想改变这个列表,只是想要在没有括号和方括号的情况下打印它。

input: [ ("a", 1), ("b",2), ("c", 3)]
output:   a 1 b 2 c 3

这是我的工作内容:

l = [ ("a", 1), ("b",2), ("c", 3)]
f = lambda x: " ".join(map(str,x))
print " ".join(f(x) for x in l)

我想知道是否有更优雅、更高效的解决方案,可能不需要进行连接操作,仅打印输出。提前感谢。


join是将列表输出为字符串的最简单方法。 - njzk2
4个回答

6
from __future__ import print_function 

l =  [("a", 1), ("b",2), ("c", 3)]

print(*(i for j in l for i in j))
a 1 b 2 c 3

或者使用itertools.chain来展开:

from itertools import chain

print(*chain(*l))

1
是的,我不知道你可以这样做。Python 3 真是太好了。 - Adam Acosta
2
我也为Python 3感到高兴! - dogacanb

2

使用 str.join() 可以使用嵌套的列表推导式:

>>> print ' '.join([str(i) if isinstance(i,int) else i for tup in A for i in tup])
a 1 b 2 c 3

如果没有使用join()函数,你需要循环遍历这些项并将它们连接起来,但我认为join()是更符合Python风格的方法。


不幸的是,OP正在寻找一种没有使用join的解决方案。虽然这是一个好的解决方案。 - idjaw
我编辑了我的问题 :) 我想尽可能避免除打印以外的操作。解决方案很好,不过。 - dogacanb
我也这么想,但我还是想问一下别人的看法。 - dogacanb
请查看Padraic的答案。 ;) - Mazdak

1
如果你绝对不想使用类似于 join 的列表平铺操作,那么这个方法可以运行,但是它很糟糕,你应该使用 join
[sys.stdout.write(str(i) + ' ' + str(j) + ' ') for (i, j) in input]

使用 stdout.write 是因为它不会像 print 一样自动添加换行符。

0

这比你想象的更简单。

   a = [ ("a", 1), ("b",2), ("c", 3)]
    for i,j in a:
        print(i,j,end=' ')

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