我可以在 print() 中的两个解压列表之间放置一些东西吗?

问题描述 投票:0回答:2

例如:我有一个充满整数的列表。 我需要从模板打印它(with ' '之间)只有一个 print():

>*sorted(lst)
>*reversed(lst)

由于解包列表,我无法使用 sep 或 f-string。我找到了一个暴力破解的方法。

int_lst = [4, 5, 2, 1]
lst = sorted(int_lst)
print(" ".join(str(i) for i in lst) + "\n" + " ".join(str(j) for j in reversed(lst)))

>1 2 4 5
>5 4 2 1

有没有办法让它更漂亮更短?

python list iterable-unpacking
2个回答
0
投票

一种方法可以是:

int_lst = [4, 5, 2, 1]
lst = sorted(int_lst)
str_lst = [str(i) for i in lst]

print(" ".join(str_lst) + "\n" + " ".join(str_lst[::-1]))

#output
1 2 4 5
5 4 2 1

0
投票

这会让它变得更短、更清晰:

print(f"{str(lst)[1:-1]} \n{str(lst[::-1])[1:-1]}")

必须使用字符串的 [1:-1] 来删除列表的括号,

str(lst) = "[element1, element2, ..., elementN]"

© www.soinside.com 2019 - 2024. All rights reserved.