#python-3.x
Вопрос:
Например, у меня есть 2 списка:
list1 = [6,6,6,6,6,6,6]
list2 = [0,2,4]
Если в и есть одинаковые индексы list1
list2
, мне нужно удалить эти индексы из list1
, потому что я должен суммировать уникальные индексы из list1, например:
a = [1,2,3,4,5]
b = [0,2,4]
x = [a.index(i) for i in a]
y = [b.index(j) for j in b]
for idx in y:
if idx in x:
x.remove(idx)
print(sum(x))
printed is >> 7
Я попробовал это, но не сработало, если в list1
a = [6,6,6,6,6,6,6]
b = [0,2,4]
x = [a.index(i) for i in a]
y = [b.index(j) for j in b]
for idx in y:
if idx in x:
x.remove(idx)
printed is >> 0
Комментарии:
1. Вы имеете в виду удаление чисел , присутствующих в
list2
изlist1
, если они присутствуют вlist1
? Поскольку индексы ссылаются на местоположение значения в списке, например, в [1,2,3], 1 находится в индексе 0, 2 находится в индексе 1 и т. Д. И удаление одних и тех же индексов не имеет смысла, так как все индексы будут одинаковыми до конца меньшего списка из двух2. и вот почему я спросил, как это сделать, когда у меня в списке 6,6,6,6, каждый индекс одинаков и может удалить только первый индекс.
Ответ №1:
Индексы и значения различны. В одном списке никогда не будет одного и того же индекса дважды. Вы получаете их индекс по их значению, однако функция index(значение) дает вам первый индекс, соответствующий вашему значению. Взгляните на:
a, b, x = [1,2,3,4,5,6,7], [1,2,3], 0
c, d = len(a), len(b)
if d < c:
d, c = len(a), len(b)
for i in range(c, d):
x = i
print(x)
Комментарии:
1. попробуйте включить 6,6,6,6,6 в список, и вы увидите, нет ли одинаковых индексов.
Ответ №2:
Ваш вопрос не очень ясен, поэтому вот два ответа:
Если вы хотите суммировать элементы из первого списка, которые не отображаются во втором списке, вот способ сделать это:
a = [1,2,3,4,5]
b = [0,2,4]
# We create a set in order to have O(1) operations to check if an element is in b
b_set = set(b)
# We sum on the values of a that are not in b
res = sum(x for x in a if x not in b_set)
print(res)
>>> 9
Если вы хотите суммировать элементы первого списка, которые не имеют своего ранга/индекса во втором списке, способ сделать это может быть:
a = [1,2,3,4,5]
b = [0,2,4]
# We create a set in order to have O(1) operations to check if an element is in b
b_set = set(b)
# We sum on the values of a that don't have their rank/index in b
res = sum(x for (i, x) in enumerate(a) if i not in b_set)
print(res)
>>> 6
Комментарии:
1. Мне нужно это делать, когда в списке есть те же значения, что и 6,6,6,6, а в другом списке есть 1,2,3 или то, что вы хотите.