我有一个元组列表,我想打印此列表的拼合形式。我不想转换列表,只打印不带括号和括号的即可。
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)
我感兴趣的是,如果有人有一个更优雅,更有效的解决方案,可能不进行合并,而仅打印。预先感谢。
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))
使用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方式。
如果您绝对必须在没有join
之类的列表变平操作的情况下执行此操作,那么这将起作用,但这很糟糕,您应该只使用join
:
[sys.stdout.write(str(i) + ' ' + str(j) + ' ') for (i, j) in input]
使用stdout.write
,因为它不会像print
那样自动添加换行符。
这比您想像的要简单。
a = [ ("a", 1), ("b",2), ("c", 3)]
for i,j in a:
print(i,j,end=' ')