Python Вложенные списки: функция настольного принтера - PullRequest
0 голосов
/ 13 апреля 2020

Цель этой программы состояла в том, чтобы взять вложенный список с именем tableData и написать функцию, которая отображает организованные столбцы, которые выровнены по правому краю. Функция работает для кода, но я хотел бы получить некоторую обратную связь или узнать, могу ли я быть более эффективным для решения проблем в будущем.

яблоки Алиса собаки
апельсины Боб кошки
вишня Кэрол лось
банан Дэвид goose

tableData = [['apples','oranges','cherries','banana'],
['Alice','Bob','Carol', 'David'], 
['dogs', 'cats','moose','goose']]

def printTable():
    colWidths = [0]* len(tableData)
    one = []
    two = []
    three = []


    for i in range(len(tableData)):
        colWidths[i] = tableData[i]
        place = tableData[i]
        for x in range(len(tableData[i])):
            spot = colWidths
            if len(one) < len(place):
                one.append(colWidths[i][x])
            elif len(two) < len(place):
                two.append(colWidths[i][x])
            elif len(three) < len(place):
                three.append(colWidths[i][x])

    for i in range(len(one)):
        print((one[i]+'  ' +two[i]+ '  ' +three[i]).center(20,))


printTable() 

Ответы [ 2 ]

3 голосов
/ 13 апреля 2020

Python имеет встроенный метод zip, который позволяет объединять итерируемые элементы в одну переменную. Если вы объедините это со способностью питонов unpacking, код станет довольно сжатым.

tableData = [['apples','oranges','cherries','banana'],
['Alice','Bob','Carol', 'David'],
['dogs', 'cats','moose','goose']]

things = list(zip(*tableData))
for tuple in things:
    print('{} {} {}'.format(*tuple).rjust(20))

Мы взяли tabledata и разбили его, используя распаковщик *, затем сжали, чтобы получить кортеж, содержащий по одному из каждого значения из разделенных списков.

Затем мы перебираем things и разделяем каждый кортеж, снова используя распаковку. Наконец, мы можем использовать rjust(), чтобы оправдать это право

0 голосов
/ 13 апреля 2020

Вместо попытки l oop, вы можете попробовать ниже -

import pandas as pd

tableData = [['apples','oranges','cherries','banana'],
['Alice','Bob','Carol', 'David'], 
['dogs', 'cats','moose','goose']]

df = pd.DataFrame(tableData)

df_transpose = df.transpose()


df_transpose['final'] = df_transpose.apply(lambda x: ' '.join(x.dropna().values.tolist()), axis=1)

with pd.option_context('display.colheader_justify','right'):
    print(df_transpose['final'].to_string(index=False,header=False))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...