我希望能够使用函数将列表列表(我们可以假设内部列表的长度都相等)转换为合理表。
到目前为止,我已经尝试了以下方法,但这不能证明该表的合理性。
我还需要了解zip在做什么?使用* v时,我可以始终打开包装吗?
我能解释为什么我需要做* v来解开元组而不是仅在下面的代码中使用* Data吗?
def printTables(Data):
for v in zip(*Data):
print(*v)
printTables(tableData)
Input:
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
Output:
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
答案 0 :(得分:2)
使用熊猫将解决您的所有问题
import pandas as pd
df = pd.DataFrame(tableData).transpose()
print(df)
0 1 2
0 apples Alice dogs
1 oranges Bob cats
2 cherries Carol moose
3 banana David goose
原生Python
for i, j, k in zip(*tableData):
print('{:<12} {:<12} {:<12}'.format(i, j, k))
apples Alice dogs
oranges Bob cats
cherries Carol moose
banana David goose
答案 1 :(得分:0)
您是否必须在本机Python中执行此操作?熊猫DataFrames可以让您自然地处理表格数据。您可以直接从列表列表创建DataFrame:
import pandas as pd
df = pd.DataFrame(tableData)
print(df)
Zip将遍历您在单独的参数中为其指定的每个列表的第i个元素。例如。 zip(list1, list2, list3)
。 *运算符会将一个iterable转换为不同的参数。因此,如果您有一个列表list4 = [list1, list2, list3]
,则可以将列表元素作为参数传递给zip(*list4)
函数。 print()
函数将在每个参数之间打印空格,因此,如果您使用*运算符传递可迭代对象(例如元组),它将在可迭代对象中打印每个元素。