Как получить попарно сумму двух одинаковых кортежей длины? Например, если у меня есть (0, -1,7) и (3,4, -7), я бы хотел (3,3,0) ответить.Как я могу суммировать два одинаковых кортежа
ответ
tuple(map(lambda (x, y): x + y, zip((0,-1,7), (3,4,-7))))
Если вы предпочитаете, чтобы избежать map
и lambda
, то вы можете сделать:
tuple(x + y for x,y in zip((0,-1,7), (3,4,-7)))
EDIT: Как один из ответов отметил, вы можете использовать сумму вместо явного разделения кортежи возвращается по zip
. Таким образом, вы можете переписать этот пример кода, как показано ниже:
tuple(sum(t) for t in zip((0,-1,7), (3,4,-7)))
Обычно понимание списка предпочтительнее. Это гораздо более интуитивно понятное, чем все функциональные ответы в # 497885. –
@ Гленн: согласился. Тем не менее, мне было легче сначала подумать с точки зрения карты и фильтра, а затем отобразить ее (нет каламбуров: P) для понимания списка. –
Я наоборот: список понятий (в данном случае, генераторные выражения, на самом деле), естественно интуитивны для меня, но я должен думать о карте - возможно, потому, что он намного реже используется в Python. –
>>> t1 = (0,-1,7)
>>> t2 = (3,4,-7)
>>> tuple(i + j for i, j in zip(t1, t2))
(3, 3, 0)
В качестве альтернативы (хорошо, если у вас есть очень большие кортежи или вы планируете делать другие математические операции с ними):
> import numpy as np
> t1 = (0, -1, 7)
> t2 = (3, 4, -7)
> at1 = np.array(t1)
> at2 = np.array(t2)
> tuple(at1 + at2)
(3, 3, 0)
Минусы: требуется больше подготовки данных. В большинстве случаев может быть излишним.
Плюсы: операции очень явны и изолированы. Наверное, очень быстро с большими кортежами.
Использование сумма():
>>> tuple(sum(pair) for pair in zip((0,-1,7), (3,4,-7)))
или
>>> tuple(map(sum, zip((0,-1,7), (3,4,-7))))
'tuple (map (operator.add, (0, -1, 7), (3, 4, -7)))' –
- 1. Как я могу отличить два одинаковых объекта в C#?
- 2. Как я могу заказать два одинаковых атрибута из разных таблиц?
- 3. Как я могу суммировать два многочлена? в python
- 4. Как связать два кортежа?
- 5. Как суммировать весовые числа одинаковых строк матрицы
- 6. Как суммировать значения с одинаковых имен?
- 7. Как сортировать два кортежа контейнеров?
- 8. Получают два одинаковых заявления?
- 9. Эффективно искать два кортежа
- 10. Суммировать строки два на два
- 11. Как суммировать два элемента массива?
- 12. Как суммировать два входных полей
- 13. Как я могу суммировать несколько прядильщиков?
- 14. Как я могу суммировать по этому запросу
- 15. Как я могу суммировать результат чисел?
- 16. Как я могу суммировать значения в списке?
- 17. TensorFlow: как я могу суммировать список tf.Variables?
- 18. Как я могу суммировать значение отдельных столбцов
- 19. Как я могу правильно суммировать баллы?
- 20. 2008R2 Как я могу суммировать общие баллы?
- 21. Как я могу суммировать бит столбца?
- 22. Как я могу суммировать значения WKInterfaceSlider?
- 23. Как я могу суммировать содержание модели Джанго
- 24. Как я могу суммировать столбцы, используя условия?
- 25. Как я могу суммировать значение в MySQLi
- 26. Как я могу суммировать значения из массива?
- 27. Как я могу суммировать столбец списка?
- 28. Как я могу суммировать время в MySQL?
- 29. Как я могу суммировать в генераторах списков?
- 30. mysql суммировать два столбца
Дубликат вопрос задал полтора года назад, который не получал никаких хороших ответов, кажется, хорошо. Все ответы на них основаны на картах, что намного менее чисто, чем выражение для понимания/генерации списка (см. Ниже). Принятый ответ в этом намного хуже - переопределение класса просто для выполнения метода на нем не имеет никакого смысла. –
Я предполагаю, что причина для принятого ответа в том, что это то, что именно странное поведение задал вопрос, так что это не ошибка администратора. –