2016-07-02 2 views
0

Вопрос состоял в том, чтобы найти симметричную разницу между двумя наборами без использования соответствующего метода!Как удалить следующую ошибку?

из будущего импорт print_function произошло

M=int(raw_input()) 

X=map(int,raw_input().split()) 

N=int(raw_input()) 

Y=map(int,raw_input().split()) 

mys=set() 

mys1=set() 

for i in X: 

    mys.add(i) 

for i in Y: 
    mys1.add(i) 

un=mys.union(mys1) 

inx=mys.intersection(mys1) 

sd=un.difference(inx) 

w=list(sd) 

w=w.sort() 

for i in (w): 
    print(w[i],end=' ') 

Ошибка:

Traceback (most recent call last): File "hackset.py", line 18, in 
<module> 
    for i in len(w): TypeError: object of type 'NoneType' has no len()** 
+0

В приведенном коде нет такой строки. –

ответ

1

list.sort не возвращает новый отсортированный функцию. Он просто сортирует список (возврат None).

Если вы хотите отсортировать отсортированный список, используйте вместо этого sorted.


Есть еще одна проблема. Итерирование списка дает элементы, вам не нужно индексировать их для получения элементов; Просто итерации без индексации.

for item in w: 
    print(item, end=' ') 
+0

Спасибо за помощь! Я хочу задать еще один вопрос: отредактируйте фрагмент кода как: 'for i in len (w): print (w [i])' .... это будет полезно? @falsetru –

+0

@PragyanshuBansal, вы не можете повторять число (возвращаемое значение 'len (w)' является числом). Вам нужно использовать 'range', если вы хотите использовать индексирование:' для i в диапазоне (len (w)): print (w [i], end = '') ' – falsetru

1

Ваша ошибка здесь:

w=w.sort() 

Возвращаемый тип w.sort() не является 'None'. Метод sort() на месте. Измените его как раз:

w.sort()