在单行代码中使用 *(扩展运算符)打印列表列表
Posted
技术标签:
【中文标题】在单行代码中使用 *(扩展运算符)打印列表列表【英文标题】:Print list of lists using *(expansion operator) in single line of code 【发布时间】:2020-05-07 02:45:21 【问题描述】:我正在尝试使用单行代码打印列表 lst
lst = [("A",23),("B",45),("C",88)]
print(*lst, sep="\n")
输出如下:
('A', 23)
('B', 45)
('C', 88)
我期待的是
A 23
B 45
C 88
不过,这可以通过下面的代码来实现
for i in range(len(lst)):
print(*lst[i], sep=" ")
但我不想使用“for循环”,而不是使用*运算符或任何其他技术在一行代码中完成此操作
【问题讨论】:
因为你已经嵌套了list
我认为for loop
是不可避免的
这能回答你的问题吗? How to make a flat list out of list of lists?
【参考方案1】:
你可以像这样在一行中做到这一点:
print('\n'.join(' '.format(*tup) for tup in lst))
【讨论】:
正要发布这样的内容作为我答案的更新。 +1【参考方案2】:您可以在一行代码中实现这一点,但它确实涉及列表理解(您可以考虑使用for
循环):
print(*[' '.join([l[0], str(l[1])]) for l in lst], sep="\n")
输出:
A 23
B 45
C 88
请注意,我们需要使用str
将l
中元组中的第二个值转换为join
的字符串。
【讨论】:
【参考方案3】:另一种方式:
print(*map(lambda x: " ".join(x), lst), sep='\n', flush=True)
【讨论】:
以上是关于在单行代码中使用 *(扩展运算符)打印列表列表的主要内容,如果未能解决你的问题,请参考以下文章