Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按顺序从每个内部列表中获取项目_Python_Python 3.x - Fatal编程技术网

Python 如何按顺序从每个内部列表中获取项目

Python 如何按顺序从每个内部列表中获取项目,python,python-3.x,Python,Python 3.x,我目前正在使用Python自动化这些枯燥的东西,我正在处理一个项目,在这个项目中,我必须以更改的顺序显示tableData中的数据,然后根据每个列表中最长元素的长度将每个元素向右对齐,这样它将显示如下内容: jabłka Alicja psy pomarańcze Bob koty 等等 我知道我必须得到每个嵌套列表的第一个元素,然后是第二个元素等等,但我真的很难做到这一点,我希望你能帮我做到这一点 PS不要担心列表项中的奇怪字母,这是我的母语:) tableData=[ ['jabłka'

我目前正在使用Python自动化这些枯燥的东西,我正在处理一个项目,在这个项目中,我必须以更改的顺序显示tableData中的数据,然后根据每个列表中最长元素的长度将每个元素向右对齐,这样它将显示如下内容:

jabłka Alicja psy

pomarańcze Bob koty
等等

我知道我必须得到每个嵌套列表的第一个元素,然后是第二个元素等等,但我真的很难做到这一点,我希望你能帮我做到这一点

PS不要担心列表项中的奇怪字母,这是我的母语:)

tableData=[
['jabłka'、'pomarańcze'、'wiśnie'、'banany'],
['Alicja','Bob','Karol','Dawid'],
[‘psy’、‘koty’、‘łosie’、‘gęsi’]
]
def printTable():
colWidth=[0]*len(tableData)
对于范围内的i(len(tableData)):
对于范围内的j(len(表数据[i]):
如果colWidth[i]
要迭代嵌套列表的“列”,请使用Python惯用语
zip(*tableData)

通过这种方式,您可以获得每列最长条目的长度:

max_lens = [len(max(col, key=len)) for col in zip(*tableData)]
print(max_lens)
# [6, 10, 6, 6]
打印实际右对齐的文本只是将正确的宽度应用于正确的元素,并使用:

要迭代嵌套列表的“列”,请使用Python惯用语
zip(*tableData)

通过这种方式,您可以获得每列最长条目的长度:

max_lens = [len(max(col, key=len)) for col in zip(*tableData)]
print(max_lens)
# [6, 10, 6, 6]
打印实际右对齐的文本只是将正确的宽度应用于正确的元素,并使用:

这将根据长度对内部元素进行排序。假定为升序

def print_table(arr):
    for col in zip(*arr):
        print(' '.join(col))

这将根据长度对内部元素进行排序。假定为升序。

另一个选项(不如使用
zip
的选项)是转置表格,然后分别打印每个列表:

def print_table(arr):
    for col in zip(*arr):
        print(' '.join(col))
def printTable():

    # Transpose table
    result = [[elem[i] for elem in tableData] for i in range(len(tableData[0]))]

    #Print results
    for r in result:
        print(" ".join(r))

printTable()

另一个选项(不如使用
zip
的选项)是转置表格,然后分别打印每个列表:

def printTable():

    # Transpose table
    result = [[elem[i] for elem in tableData] for i in range(len(tableData[0]))]

    #Print results
    for r in result:
        print(" ".join(r))

printTable()

您的预期输出是什么?请澄清“根据每个列表中最长元素的长度将每个元素向右对齐”的意思。您的示例显示在任何意义上看起来都不是右对齐的。您可以创建一个数据帧并转置它吗?您的预期输出是什么?请澄清“根据每个列表中最长元素的长度将每个元素向右对齐”的意思。您的示例显示在任何意义上看起来都不是右对齐的。您可以创建一个数据帧并转置它吗?它用于生成列,但必须显示为字符串,而不是列表。我知道我这样做只是为了练习,但我一直在努力让它像他们在书中说的那样起作用。无论如何,谢谢。它可以用来制作列,但它必须显示为字符串,而不是列表。我知道我这样做只是为了练习,但我一直在努力让它像他们在书中说的那样起作用。无论如何,谢谢。是的,但是我必须根据内部列表的长度得到第二、第三个等。是的,但是我必须根据内部列表的长度得到第二、第三个等。
def printTable():

    # Transpose table
    result = [[elem[i] for elem in tableData] for i in range(len(tableData[0]))]

    #Print results
    for r in result:
        print(" ".join(r))

printTable()