如何从列中的列表中打印Python值?
我对它们进行了排序,但我不知道如何以两种方式打印它们 例如:
list=['apricot','banana','apple','car','coconut','baloon','bubble']
第一个:
apricot bubble ...
apple car
baloon coconut
第二种方式:
apricot apple baloon
bubble car coconut
我也希望将所有内容与ljust / rjust对齐。
我试过这样的事情:
print " ".join(word.ljust(8) for word in list)
但它只显示在第一个例子中。我不知道这是否是正确的方法。
答案 0 :(得分:1)
the_list = ['apricot','banana','apple','car','coconut','baloon','bubble']
num_columns = 3
for count, item in enumerate(sorted(the_list), 1):
print item.ljust(10),
if count % num_columns == 0:
print
输出:
apple apricot baloon
banana bubble car
coconut
<强>更新强>: 这是一个全面的解决方案,可以解决您给出的两个示例。我已经为此创建了一个函数,我已经对代码进行了评论,以便明白它是什么。
def print_sorted_list(data, rows=0, columns=0, ljust=10):
"""
Prints sorted item of the list data structure formated using
the rows and columns parameters
"""
if not data:
return
if rows:
# column-wise sorting
# we must know the number of rows to print on each column
# before we print the next column. But since we cannot
# move the cursor backwards (unless using ncurses library)
# we have to know what each row with look like upfront
# so we are basically printing the rows line by line instead
# of printing column by column
lines = {}
for count, item in enumerate(sorted(data)):
lines.setdefault(count % rows, []).append(item)
for key, value in sorted(lines.items()):
for item in value:
print item.ljust(ljust),
print
elif columns:
# row-wise sorting
# we just need to know how many columns should a row have
# before we print the next row on the next line.
for count, item in enumerate(sorted(data), 1):
print item.ljust(ljust),
if count % columns == 0:
print
else:
print sorted(data) # the default print behaviour
if __name__ == '__main__':
the_list = ['apricot','banana','apple','car','coconut','baloon','bubble']
print_sorted_list(the_list)
print_sorted_list(the_list, rows=3)
print_sorted_list(the_list, columns=3)