для i, j в a, b: TypeError: объект 'NoneType' не повторяется - PullRequest
0 голосов
/ 21 января 2020
def missing_array(a,b):
    a=a.sort()
    b=b.sort()

    for i,j in a,b:
        if i!=j:
            return i

    return a[-1]

missing_array([1,2,3,4,5,6],[1,2,4,5,6])

ПОЧЕМУ Я ПОЛУЧАЮ ЭТУ ОШИБКУ

TypeError                                 Traceback (most recent call last)
<ipython-input-3-7c1f70dbb9ae> in <module>
      9     return a[-1]
     10 
---> 11 missing_array([1,2,3,4,5,6],[1,2,4,5,6])
     12 

<ipython-input-3-7c1f70dbb9ae> in missing_array(a, b)
      3     b=b.sort()
      4 
----> 5     for i,j in a,b:
      6         if i!=j:
      7             return i

TypeError: cannot unpack non-iterable NoneType object

1 Ответ

0 голосов
/ 21 января 2020

Из Документы :

Python списки имеют встроенный метод list.sort (), который изменяет список на месте.

На месте означает, что вызов этого метода отсортирует объект списка, для которого вы вызываете метод, и НЕ вернет новый список. Метод sort () не имеет возвращаемого типа (метод void); в Python такие методы по-прежнему возвращают 'None'.

Кроме того, ваш синтаксис для итерации двух массивов недействителен. Вы должны рассмотреть метод 'zip', который согласно Docs ,

Возвращает итератор кортежей, где i-й кортеж содержит i-тый элемент из каждого последовательностей аргументов или итераций.

Итак, ваш код должен быть:

def missing_array(a,b):
    a.sort()
    b.sort()
    # Iterating over iterator of tuples returned by zip:
    for (i,j) in zip(a,b):
        if i!=j:
            return i
    return a[-1] if len(a) > len(b) else b[-1]

print(missing_array([1,2,3,4,5,6], [1,2,4,5,6]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...