在 Python 中按列打印列表

在 Python 中按列打印列表

Print a list in columns in Python

要按列打印列表:

  1. 使用该zip()函数获取元组的 zip 对象。
  2. 使用格式化字符串文字来格式化一行中每个元组中的项目。
  3. 使用print()函数打印结果。
主程序
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] columns = 3 # a b c # d e f # g h i for first, second, third in zip(my_list[::columns], my_list[1::columns], my_list[2::columns]): print(f'{first: <10}{second: <10}{third}')

zip函数并行迭代多个可迭代对象,并生成元组,其中每个可迭代对象都有一个项目

zip函数返回元组的迭代器。

主程序
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] columns = 3 # 👇️ [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')] print(list(zip(my_list[::columns], my_list[1::columns], my_list[2::columns])))

zip()我们在函数调用中使用了列表切片。

主程序
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] print(my_list[::3]) # 👉️ ['a', 'd', 'g'] print(my_list[1::3]) # 👉️ ['b', 'e', 'h'] print(my_list[2::3]) # 👉️ ['b', 'e', 'h']

列表切片的语法是my_list[start:stop:step].

我们指定step值以获得包含每 3 个元素的列表,因为我们要打印 3 列。

第一个列表切片包含从 index 开始的原始列表的每 3 个元素0

第二个列表切片包含从 index 开始的原始列表的每 3 个元素1

最后一步是使用格式化字符串文字来格式化列中的列表项。

主程序
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] columns = 3 # a b c # d e f # g h i for first, second, third in zip(my_list[::columns], my_list[1::columns], my_list[2::columns]): print(f'{first: <10}{second: <10}{third}')

格式化字符串文字还使我们能够

在表达式块中使用
格式特定的迷你语言。

主程序
my_str = 'hi' # 👇️ left-aligned result = f'{my_str: <6}' print(repr(result)) # 👉️ 'hi ' # 👇️ right-aligned result = f'{my_str: >6}' print(repr(result)) # 👉️ ' hi'

冒号和小于号之间的空格是填充符。

小于号或大于号是对齐方式。

小于号使字符串左对齐,大于号使字符串右对齐。

您可以在两列中打印列表,并进行一些非常小的更改。

主程序
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] columns = 2 # a b # c d # e f # g h for first, second in zip(my_list[::columns], my_list[1::columns]): print(f'{first: <10}{second}')

您还可以在打印任何列之前打印标题。

主程序
headers = ['ID', 'Name', 'Country'] my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] columns = 3 print(f'{headers[0]: <10}{headers[1]: <10}{headers[2]}') # ID Name Country # a b c # d e f # g h i for first, second, third in zip(my_list[::columns], my_list[1::columns], my_list[2::columns]): print(f'{first: <10}{second: <10}{third}')

如果您需要打印列中的列表列表,可以使用相同的方法。

主程序
headers = [ 'ID', 'Name', 'Country' ] # 👇️ list of lists employees = [ [1, 'alice', 'Austria'], [2, 'bobbyhadz', 'Bulgaria'], [3, 'carl', 'Canada'], ] print(f'{headers[0]: <10}{headers[1]: <15}{headers[2]}') # ID Name Country # 1 alice Austria # 2 bobbyhadz Bulgaria # 3 carl Canada for row in employees: print(f'{row[0]: <10}{row[1]: <15}{row[2]}')

发表评论