gpt4 book ai didi

python - 如何使用 for 循环在单独的列中打印列表中的列表?

转载 作者:行者123 更新时间:2023-12-01 07:40:53 25 4
gpt4 key购买 nike

问题出自 ATBS 第 6 章。它是创建一个函数,传递一个列表列表,然后打印每个列表,但要对齐,以便无论列表中字符串的长度如何,每一列都整齐且齐平。

我创建了一个空列表,其元素数量与每个嵌入列表相同(假设长度相同),并找到每个列表中的最大字符串长度以及该数字到空列表。然后要求打印由最大字符串长度调整的每个列表。

table = [['Tom','Dick','Harry','John'],
['Apples','Oranges','Strawberries','Grapes'],
['Brocolli', 'Asparagus', 'Carrots', 'Potatoes']]




def printTable(tableData):
colWidths = [0] * len(tableData)
for i in range(len(tableData)):
colWidths[i] = max(len(j) for j in tableData[i])
for i in range(len(tableData)):
for j in tableData[i]:
print(j.rjust(colWidths[i]))



printTable(table)

这将打印以下内容

  Tom
Dick
Harry
John
Apples
Oranges
Strawberries
Grapes
Brocolli
Asparagus
Carrots
Potatoes

但我希望它在三个单独的列中,而不是只有一个。我知道这可以简单地使用 zip 来完成,但我还没有介绍这一点。我想在覆盖新内容之前了解如何使用 for 循环来完成工作,因为我认为这不会帮助我正确学习基础知识。

最佳答案

试试这个:

table = [['Tom','Dick','Harry','John'],
['Apples','Oranges','Strawberries','Grapes'],
['Brocolli', 'Asparagus', 'Carrots', 'Potatoes']]




def printTable(tableData):
colWidths = [0] * len(tableData)
for i in range(len(tableData)):
colWidths[i] = max(len(j) for j in tableData[i])
for i in range(len(tableData)):
for j in tableData[i]:
print(j.rjust(sum(colWidths[:i+1])))



printTable(table)

我所做的只是更改rjust,不仅为当前列进行调整,还为之前的所有列进行调整。

好在你已经将所有宽度放入列表中:)

关于python - 如何使用 for 循环在单独的列中打印列表中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com