Как я могу вычесть кортежи в списке? - PullRequest
0 голосов
/ 28 декабря 2018

Допустим, у меня есть список с кортежами в нем.

Примерно так:

listnum = [(18,12),(12,20)]

Есть ли способ вычесть то, что находится в кортежах, и сделать listnum в:

listnum = [6,8]

Как видите, он берет наибольшее из чисел в кортеже и вычитает его другим.

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Используйте понимание списка: -

>>> listnum = [(18,12),(12,20)]
>>> [(i-j) for i,j in listnum]
[6, -8]
>>> listnum = [(18,12),(12,20),(32,54),(2,43)]
>>> [(i-j) for i,j in listnum]
[6, -8, -22, -41]

И как вы просили bigger number - smaller;используйте abs() для вычисления.

>>> listnum = [(18,12),(12,20),(32,54),(2,43)]
>>> [abs(i-j) for i ,j in listnum]
[6, 8, 22, 41]
0 голосов
/ 28 декабря 2018

Вы можете пройтись по списку, добавить каждый ответ в новый список и вывести список.

Код

y=[]
listnum = [(18,12),(12,20)]
for a,b in listnum:
    x=abs(a-b)
    y.append(x)
print (y)

Выход

[6, -8]
0 голосов
/ 28 декабря 2018

Просто понимание списка работает нормально.

listnum = [(18,12),(12,20)]
listnum = [x[0] - x[1] for x in listnum]
# [6, -8]

Редактировать: Для вычитания большего числа из меньшего, вы можете сделать что-то вроде этого.

listnum = [max(x[0],x[1]) - min(x[0], x[1]) for x in listnum]
# [6, 8]

Или выможет быть немного более дерзким об этом

listnum = [abs(x[0] - x[1]) for x in listnum]
# [6, 8]
0 голосов
/ 28 декабря 2018

Вы можете сделать это следующим образом, используя функцию map:

listnum = [(18,12),(12,20)]
listnum = list(map(lambda x: abs(x[0]-x[1]),listnum))
print(listnum)

Результат:

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