Ошибка типа: объект ‘NoneType’ не может быть подписан, Python

#python #list #nonetype

Вопрос:

Мне нужно посчитать количество пар элементов, которые равны друг другу

 list1 = input("Введите список: ") list2 = list1.split() list3 = [] counter = 0 for i in range(0, (len(list2))):  element = list2[i]  if element == "":  pass  elif list2.count(element)//2 gt;= 1:  counter  = list2.count(element)//2  for a in range(0, (len(list2))):  if list2[a] != element:  list2 = list3.append(list2[a])  else:  list2 = list3.append("")  else:  pass print(list2) print(counter)  

ошибка:

 if list2[a] != element: TypeError: 'NoneType' object is not subscriptable  

Я не понимаю, чего он хочет от меня и что я сделал не так

Комментарии:

1. list2 = list3.append(...) это то место, куда вы list2 превращаетесь None по мере list.append возвращения None .

2. Не могли бы вы также добавить ожидаемый o/p?

Ответ №1:

Код также может быть следующим:

 words = input("Введите список: ").split()  list3 = [] counter = 0 counted_words = set()  for element in words:  if element != "" and element not in counted_words:  counted_words.add(element)  c = words.count(element) // 2  if c gt;= 1:  counter  = c  list3.extend(['' if w == element else w for w in words])  print(list3) print(counter)  

Комментарии:

1. Это неверно, мне нужно рассчитать так, чтобы один элемент мог образовывать только одну пару. То есть, если я введу «c c c c», то он должен вернуть 2, а не 8

2. Существует стандартная молуда Python from collections import Counter . Вы можете узнать об этом.