在新行上打印列表

时间:2019-05-21 22:41:34

标签: python-3.x

我有一个清单,我在上面调用了一个函数,以使其按字典顺序打印出清单。词法从本质上来说是一个sort(),并不重要,但我希望此列表与每个条目都换行。现在,它的打印效果就像

$ export foo="abc"

$ echo $foo
abc

$ echo '{"key":"$foo"}'
{"key":"$foo"}

$ echo {"key":"$foo"}
{key:abc}

$ echo {\"key\":\"$foo\"}
{"key":"abc"}

当我想要

['(011)', '(022)', '(040)', '(04344)', '(044)', '(04546)', '(0471)', '(080)', '(0821)'] 

我尝试使用011 022 etc 循环,但这使情况变得更糟。我尝试过

for

但这并没有改变任何东西。我什至尝试制作一个新的空列表并追加,但是没有“ lexicographic”函数调用,新行功能无法正常工作。

print (lexicographic(uniquelist), sep = '\n') 

期望如此,但按字典顺序排序并换行

3 个答案:

答案 0 :(得分:1)

您可以通过两种方式完成自己喜欢的事情:

uniques = ['(04344)', '(080)', '(044)', '(011)',
           '(0821)', '(022)', '(040)', '(0471)',
          '(04546)']

# Join with new lines and print
print('\n'.join(sorted(uniques)))

# A classic loop, nothing wrong with this
for item in sorted(uniques):
    print(item)

输出为:

(011)
(022)
(040)
(04344)
(044)
(04546)
(0471)
(080)
(0821)

如果您不想要括号,

for item in sorted(uniques):
    print(item[1:-1])

答案 1 :(得分:1)

在词典功能内,尝试做

for l in lexographically_sorted_list:
    print (l)

答案 2 :(得分:1)

如果只想将列表的每个元素打印在一行上,则可以使用:[print(elt) for elt in list]

这里有一个示例也删除了括号:

list = ['(0821)', '(011)', '(080)', '(022)',  '(04344)', '(040)', '(044)', '(04546)', '(0471)', ]

# sort 
list.sort()

# Print each element per line
[print(elt[1:-1]) for elt in list]
# 011
# 022
# 040
# 04344
# 044
# 04546
# 0471
# 080
# 0821

希望有帮助!