В Python, если у меня есть 2D-список, как мне перенести элементы одного 2D-списка в другой 2D-список, но в другом порядке? - PullRequest
0 голосов
/ 07 мая 2020

фактический код печати в столбцах AB C

В Python, я могу напечатать это

abcd  efgh  ijkl    
mno   pqr   stuv 

что, если я хочу напечатать вот так?

abcd ijkl  efgh
mno  stuv  pqr

1 Ответ

0 голосов
/ 07 мая 2020

Это даст вам желаемый результат, предполагая, что вы начинаете со списка списков строк.

string_lists = [["abcd", "efgh", "ijkl"], ["mno", "pqr", "stuv"]]

for item in string_lists:
    # get the first item
    # use slicing to get items 1 to end, reverse with [::-1]
    # use spread operator to spread inside of a new list
    print([item[0], *item[1:][::-1]])

ВЫХОД:

['abcd', 'ijkl', 'efgh']
['mno', 'stuv', 'pqr']

Ресурс: Индексирование и нарезка Python

Если вы хотите распечатать табличные данные, как в вопросе, вы можете сделать это с помощью этого кода.

import textwrap

# Calculate the length of the longest string
COLSIZE = max(len(item) for items in string_lists for item in items)

# List of reordered lists
data = [[item[0], *item[1:][::-1]] for item in string_lists]

# Use str.ljust and textwrap wrap with joins to print tabular data
print(
    "\n".join(
        map(
            " ".join,
            (
                [s.ljust(COLSIZE) for s in textwrap.wrap(" ".join(col), COLSIZE)]
                for col in data
            ),
        )
    )
)

ВЫХОД:

abcd ijkl efgh
mno  stuv pqr 

Ресурс: textwrap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...