Проверьте один за другим, если элемент во вторых списках больше по другому элементу в первых списках, затем вычтите - PullRequest
0 голосов
/ 05 мая 2019

Я сделаю все возможное, чтобы объяснить мою озабоченность.

Эта проблема для меня является практическим занятием, так как я изучаю питон.

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

Пример:

# inputted values
list1 = [50,40,90,30]
list2 = [40,50,40,20]


# desired output:
output = [10,40,50,10]

Ответы [ 4 ]

3 голосов
/ 05 мая 2019

Вам нужны реальные списки, а не только четыре переменные.Тогда сделай это.

list1=[50,40, 90, 30]
list2=[40, 50, 40, 20]
output=[p1-p2 if p1>p2 else p1 for (p1, p2) in zip(list1, list2)]
print(output) #==> [10, 40, 50, 10] 
1 голос
/ 05 мая 2019

По сути, вам нужно перебрать оба списка вместе и сравнить каждый элемент попарно, тогда вывод будет элементом из списка1, если он меньше, чем элемент в списке2, иначе выход будет равен разнице элемента списка 2 и элемента списка 1

Два способа добиться этого

  1. Понимание списков путем одновременной итерации обоих списков
list1 = [50,40,90,30]
list2 = [40,50,40,20]

print([list1[idx] if list1[idx] < list2[idx] else list1[idx] - list2[idx] for idx in range(len(list1))])

Вывод [10, 40, 50, 10]

  1. Понимание списков путем итерации итератора, созданного zip ping обоих списков вместе
list1 = [50,40,90,30]
list2 = [40,50,40,20]

print([item1 if item1 < item2 else item1 - item2 for item1, item2 in zip(list1, list2)])

Вывод [10, 40, 50, 10]

0 голосов
/ 05 мая 2019

Использование numpy может быть излишним, но синтаксис ясен и лаконичен:

>>> import numpy as np
>>> a1 = np.array([50, 40, 90, 30])
>>> a2 = np.array([40, 50, 40, 20])
>>> np.where(a1 >= a2, a1 - a2, a1)
array([10, 40, 50, 10])
0 голосов
/ 05 мая 2019

Я не понимаю, почему мы все отвечаем на нового разработчика Python с помощью списков, я считаю, что новоявленный разработчик должен сначала начать с более простого синтаксиса и позволить им узнать о функциях Python (таких как списки), которые можете улучшить свой код.
Чтобы ответить на ваш вопрос,
1. Вы можете перебирать несколько списков одинаковой длины, используя встроенный в Python zip, который принимает несколько итераций в качестве аргументов и возвращает кортеж с текущим элементом каждого итератора по одному и тому же индексу, функция работает следующим образом;

list1 = [50,40,90,30]
list2 = [40,50,40,20]

for i1, i2 in zip(list1, list2):
    print(i1, i2)

# result
50, 40
40, 50
90, 40
30, 20

, а затем 2. вы можете начать добавлять свою логику на каждой итерации;

# if you want to store the results use the results list.
results = []
list1 = [50,40,90,30]
list2 = [40,50,40,20]

for i1, i2 in zip(list1, list2):
    if i1 > i2:
        result.append(i1 - i2)
        # or if you don't need to store the results, just use...
        print(i1 - i2)
    else:
        result.append(i1)
        # same here...
        print(i1)

# result
10
40
50
10
# results == [10, 40, 50, 10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...