У меня есть список со списками, которые выглядят так:
c = [[1,0,1], [2,3,1], [0,0,0]]
Я сделал функцию toss_non_G2(potential_list)
, которая выглядит примерно так:
def toss_non_G2(potential_list):
for list in potential_list:
if any(x not in [0,1] for x in list):
potential_list.remove(list)
return potential_list
Я попробовал:
print(toss_non_G2(c))
>>> [[1, 0, 1], [0, 0, 0]]
Как я и ожидал. Но затем я проверил это на чем-то более сложном, и, следовательно, проблема :
import numpy as np
from scipy.linalg import solve
A = [[0.8760162 , 0.0571752 , 0.43403856], [0.04730946, 0.56278686, 0.05767958], [0.95880316, 0.9595227 , 0.02226051]]
b_list = [[1, 0, 1], [1, 1, 1]]
x_list = list()
for b in b_list:
x = solve(A, b)
x_list.append(x)
print(toss_non_G2(x_list))
>>> [array([-0.52792558, 1.49611693, 3.17236923])]
В этом случае я ожидал пустой список. Почему не удаляются все списки со значениями, отличающимися от 0 или 1, как в операторе if? Это как-то связано со списком, являющимся массивом numpy?