#python #list
Вопрос:
У меня есть списки x и y
x = [0, 0, 1, 0]
y = [1, 0, 1, 0]
какую функцию я должен использовать в python, чтобы, когда » x » и » y » имеют значение 1. Затем «x» и «y» изменятся так, что это значение станет 0 как в x, так и в y » (1 станет 0 в обоих списках), как показано ниже. Другими словами, я хочу изменить списки выше на списки ниже.
a = [0, 0, 0, 0]
b = [1, 0, 0, 0]
Тогда я смогу использовать новые списки «а» и «в».
Я зашел так далеко:
#original author @Brett Lapierre
x = [0, 0, 1, 0]
y = [1, 0, 1, 0]
def excluder(yVal, xVal):
for count, ele in enumerate(yVal):
if yVal[count] == xVal[count]:
print("there is a match") # how would I change just the 1 values in both lists to 0?.
excluder(x, y)
Большое вам спасибо.:)
Комментарии:
1. Меня не волнуют нули, они могут оставаться такими, какие они есть, только когда один повторяется в обоих списках в одном и том же месте. заранее спасибо
2. Вы спрашиваете, как изменить значения списка?
3. в приведенном выше примере я определил, где с помощью перечисления. Я должен изменить тот, который равен 1 в обоих списках. спасибо Даниял
4.
if yVal[count] == xVal[count] == 1: yVal[count] = xVal[count] = 0
5. вы можете использовать xor в numpy
np.logical_xor(x, y)
Ответ №1:
Это то, что вы ищете? Это работает на меня.
x = [0, 0, 1, 0]
y = [1, 0, 1, 0]
def change():
global x, y
for i, b in enumerate(x):
if x[i] == y[i]:
x[i] = 0
y[i] = 0
change()
Это должно сработать.
Выполнение этого приведет к x
становлению [0, 0, 0, 0]
и становлению y [1, 0, 0, 0]
.
Комментарии:
1. @basem добро пожаловать! Пожалуйста, поднимите голос, если это полезно.
2. @basem также, если это сработало, вы можете принять ответ.