Как отсортировать список, вложенный в другой список? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть списки, вложенные во внешний список.Я хочу отсортировать элементы во внутренних списках без изменения положения элементов (в данном случае списков) во внешнем списке.Как это сделать?

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

num = list(map(str, input().split()))
n_list = []
for i in range(len(num)):
    num_in_num = [int(j) for j in num[i]]
    n_list.append(num_in_num)
print(n_list)

для этого заданного ввода:

5654 3456 7215 7612 5463

Я получаю список как:

[[5, 6, 5, 4], [3, 4, 5, 6], [7, 2, 1, 5], [7, 6, 1, 2], [5, 4, 6, 3]]

Я хочу, чтобы вывод был таким:

[[4, 5, 5, 6], [3, 4, 5, 6], [1, 2, 5, 7], [1, 2, 6, 7], [3, 4, 5, 6]]

Как получить этот вывод?

Ответы [ 3 ]

1 голос
/ 31 мая 2019

Попробуйте список понимания , где вы сопоставляете свои строки с целыми числами, а затем сортируете их, используя sorted

num = ['5654', '3456', '7215', '7612', '5463']
answer = [sorted(map(int, i)) for i in num]
# [[4, 5, 5, 6], [3, 4, 5, 6], [1, 2, 5, 7], [1, 2, 6, 7], [3, 4, 5, 6]]
0 голосов
/ 01 июня 2019
inp = '5654 3456 7215 7612 5463' # user input
res= [] # list to store the final output

# iterating over each number which is divided into a list via inp.split()
for i in inp.split():
    # keeping internal list which will keep the each digit in int format
    tmp=[]
    for j in i: # iterating over the number eg 5654
         # converting each digit to int and adding it to temp list
         tmp.append(int(j))
    # sorting internal list and appending it to final result list
    res.append(sorted(tmp)) 

print(res) # printing final list

выход

[[4, 5, 5, 6], [3, 4, 5, 6], [1, 2, 5, 7], [1, 2, 6, 7], [3, 4, 5, 6]]
0 голосов
/ 31 мая 2019

Вы можете использовать карту для этого:

n_list = list(map(sorted, n_list))

или напрямую:

n_list = list(map(lambda n:sorted(map(int,n)), input().split())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...