#python
#python
Вопрос:
Например: у меня есть список, который:
[0,15,1,7,2,16]
И мне нужно было бы вывести этот список в
[(1,7),(0,15),(2,16)]
.
При этом разделяются каждые два термина с начала, а также второй термин подсписка упорядочивается в порядке возрастания.
Есть ли способ выполнить это без использования каких-либо функций библиотеки python, кроме import math?
Комментарии:
1. Ах, так это домашнее задание …?? А вы пробовали решать это самостоятельно?
2. это была дополнительная задача, которая не была оценена. Я получил этот список из другой серии вычислений. Я подумал, не использовать ли мне цикл for, чтобы найти минимальное значение 2-го элемента, а затем отсортировать его.
3. Ну, в любом случае приятно проявить некоторые усилия в решении проблемы, когда вы просите о помощи в SO, иначе создается впечатление, что вы просто хотите, чтобы другие выполнили какую-то задачу за вас
4. я понимаю. Я попробую сам и немного опубликую его
Ответ №1:
С пониманием списка и методом сортировки
l1 = [0,15,1,7,2,16]
def on_sec(v):
return v[1]
print(sorted ([(l1[e], l1[e 1]) for e in range(0, len(l1), 2)], key=on_sec))
# OUTPUT: [(1, 7), (0, 15), (2, 16)]
Ответ №2:
Попробуйте это :
a = [0,15,1,7,2,16]
b = sorted([a[n:n 2] for n in range(0, len(a), 2)], key = lambda x: x[1])
print(b) # OUTPUT : [[1, 7], [0, 15], [2, 16]]
Комментарии:
1. я пробовал ваш код, но он ничего не выводит в командное окно
2. @Tony Попробуйте присвоить переменной типа
b = sorted(..)
и затемprint(b)
. Должно сработать
Ответ №3:
Numpy очень полезен для такого рода операций разделения. Мы можем использовать reshape
, чтобы разделить его на пары, а затем отсортировать на основе второго элемента.
import numpy as np
l = [0,15,1,7,2,16]
split = np.reshape(l, (-1,2))
sorted(split, key = lambda x: x[1])
В качестве альтернативы мы также можем выполнить сортировку с помощью numpy:
split[split[:,1].argsort()]
Ответ №4:
a = [0,15,1,7,2,16]
l = []
for i in range(0,len(a),2):
c = (a[i],a[i 1])
l.append(c)
l.sort()
print(l)
Ответ №5:
Вы можете использовать функцию sorted()
с ключом:
l = [0, 15, 1, 7, 2, 16]
sorted(zip(l[::2], l[1::2]), key=lambda x: x[1])
# [(1, 7), (0, 15), (2, 16)]