Есть список чисел:
а = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5]
b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)]
Подскажите, как это сделать? Весь инет перерыл.
Большое Всем спасибо!
а = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5]
b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)]
a = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5] b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)] out = [] for i in a:# для каждого элемента из списка а for j in b:# для каждого кортежа из списка b if i == j[0]:# если текущий элемент из списка а равен первому элементу из текущего кортежа списка b out.append(j[1])# добавить в итоговый список второй элемент текущего кортежа print(out)
artemu88Приведи пример для
который нужно отсортировать по номеру кортежа
artemu88Что из этих a и b должно получиться в результате.a = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5] b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)]
artemu88
Подскажите, как это сделать? Весь инет перерыл.
order = dict(b) a.sort(key=lambda x:order[x])
py.user.nextВ результате должен получиться список, в котором элементы первого списка идут в том же порядке, что и первые числа в кортеже:
Что из этих a и b должно получиться в результате.
а = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5]
b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)]
результат = [3, 3 ,10, 5, 7, 7, 2, 2, 2]
artemu88Т.е. вторые числа кортежа не используются?
в котором элементы первого списка идут в том же порядке, что и первые числа в кортеже
{v[0]:k for k,v in enumerate(b)}
a = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5] b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)] c = [] for i in a: for j in b: if i == j[0]: c.append(j)# выбираю сюда все кортежи,которые соответствуют списку а d = sorted(c,key=lambda i:i[1]) #сортирую список по значениям out = [i[0] for i in d]#вывожу в список первые элементы кортежа из отсортированного списка print(out)
[3, 3, 10, 6, 5, 7, 7, 2, 2, 2]
xam1816Вижу в вашем алгоритме два минуса.
тогда вот так
artemu88
Есть список чисел:
…
который нужно отсортировать…
artemu88
который нужно отсортировать по номеру кортежа в списку кортежей (первый элемент в кортеже)
xam1816
задание не понятно
doza_andartemu88 , ты неправильно выражаешься. Первый элемент в кортеже (a, b) - это элемент a, а не элемент b. А элемент b - это второй элемент в кортеже. Так вот индекс первого элемента в кортеже равен нулю, а индекс второго элемента в кортеже равен единице. Элемент в кортеже и индекс элемента в кортеже - это разные понятия, это не одно и то же. Поэтому тебя не понимают. Выражайся, как все.
Ну я так понял что Во втором списке надо найти кортеж в котором на первом месте стоит заданное число.
>>> def f(a, b): ... t = dict(b) ... out = [x for _, x in sorted((t.get(i), i) for i in a)] ... return out ... >>> a = [2, 2, 2, 3, 3, 6, 7, 7, 10, 5] >>> b = [(4, 8), (3, 13), (10, 17), (8, 20), (6, 29), (5, 38), (9, 56), (7, 58), (2, 64), (1, 79)] >>> >>> f(a, b) [3, 3, 10, 6, 5, 7, 7, 2, 2, 2] >>>