Как выровнять список строк вправо? - PullRequest
1 голос
/ 05 апреля 2020

Есть ли способ для меня "выровнять" список строк по правому краю? Я выполняю сортировку отсчетов и хочу отсортировать персонажей справа.

Например, задан список строк

например. list = ['ab c', 'a', 'qwerty', 'cd']

Длина самой длинной строки в списке - 6 (qwerty),

list = ['abc', 'a','qwerty', 'cd']
biggest = max(list, key=len)
max = biggest - 1

list2= [] 
for col in range(-max, 0):
    for i in list:
       list2.append(i[abs(col)])

Поскольку мои другие строки не имеют длину, равную qwerty, возникнет ошибка, как мне «выровнять» все мои строки вправо? поэтому, когда я пытаюсь отсортировать по последнему алфавиту, 'a' будет выровнен с 'y' из 'qwerty'.

     a
    cd
   abc
qwerty

И я хотел бы выполнить sh это без дополнения

Ответы [ 3 ]

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

Вы можете отсортировать весь список по длине и использовать мини-язык формата для вывода:

data = ['abc', 'a','qwerty', 'cd'] 


s = sorted(data, key=len)    # sorted copy of your list
maxlen = len(s[-1])          # longest is last element in sorted list

for l in s:
    print(f"{l:>{maxlen}}")  # not padded, just printed out right aligned

Вывод:

     a
    cd
   abc
qwerty
0 голосов
/ 05 апреля 2020

Насколько я понимаю вопрос, это должно быть решение:


list_1 = ['aaaz', 'abc', 'a', 'qwerty', 'cd', "xxxxxxxxca"]


def my_sort(data):
    inverted = sorted(data, key=lambda x: x[::-1])
    return inverted

max_len = max([len(s) for s in list_1])

list_2 = my_sort(list_1)
print(list_2)

>>> ['a', 'xxxxxxxxca', 'abc', 'cd', 'qwerty', 'aaaz']

Я понимаю, что строки должны быть отсортированы по алфавиту, но справа налево.

0 голосов
/ 05 апреля 2020
list_1 = ['abc', 'a','qwerty', 'cd']
biggest = max(list, key=len)
biggest=len(biggest)
list_2=[]
//with padding
for i in list_1:
   list_2.append(' '*(biggest-len(i))+i)
//without padding
for i in list_1:
   list_2.append(f"{i:>{biggest}}")

Я бы go при таком подходе

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