У меня есть следующий код: Существует пустой массив multidimensional_array, в котором либо есть все целые числа и нет нулей, либо один ноль среди многих целых чисел:

zeros_list = []   

for line in multidimensional_array:   # if find any zeros, append to list 'zeros'
    for x in line:
        if x.any() == 0:
            zeros_list.append(x)
        else:
            pass

for item in zeros:
    if item == 0:
        sys.stdout.write( 'True')   # if there is a zero, True
    else:
        sys.stdout.write( 'False')  # otherwise, False

К сожалению, это не работает правильно. Если есть ноль, он выводит True. Если нет, то ничего не происходит. Каждый раз, когда я запускаю это в скрипте Python script.py, он должен сбрасываться. Как я могу настроить это для запуска «Ложь»?

6
ShanZhengYang 15 Дек 2015 в 02:07

4 ответа

Лучший ответ

Я прошу прощения. Это [многомерный] массив NumPy. Есть или нет ни одного нуля в массиве numpy? Это тест

Хорошо, это поможет нам куда-нибудь. Вы можете просто оформить

0 in multidimensional_array

Демо:

>>> import numpy as np
>>> test1 = np.arange(6).reshape(2,3)
>>> test1
array([[0, 1, 2],
       [3, 4, 5]])
>>> 0 in test1
True
>>> test1[0][0] = 42
>>> test1
array([[42,  1,  2],
   [ 3,  4,  5]])
>>> 0 in test1
False
8
timgeb 14 Дек 2015 в 23:23

Поскольку вы сказали, что s - это строка, гораздо проще было бы использовать string.count()

>>> s = '112312390'
>>> s.count('0')
1
>>> s = '11231239'
>>> s.count('0')
0
>>>
2
letsc 14 Дек 2015 в 23:10
>>> import numpy as np
>>> A = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> (A==0).any()
False
>>> (A!=0).all()
True
>>> 0 not in A
True
>>> A = np.array([[1,2,3],[4,5,6],[7,0,9]])
>>> (A==0).any()
True
>>> (A!=0).all()
False
>>> 0 not in A
False

Ваш последний for цикл должен быть просто if

if zeros:
    sys.stdout.write('True')   # if there is a zero, True
else:
    sys.stdout.write('False')  # otherwise, False
4
John La Rooy 14 Дек 2015 в 23:58

Если вы добавляете zeros_list, то должно быть:

for item in zeros_list:
-1
lcieslak 14 Дек 2015 в 23:20