Удалить слово из списка python
Опять стыдный вопрос, есть у меня список слов и нужно удалить их из списка по условию (не создавая новый список)
words="вот есть какая-то строка и мне нужно удалить слова где больше 4 уник символов"
words_sp=words.split()
x=0
for word in words_sp:
for i in range(1, len(words_sp)+1):
if len(set(word))>4:
words_sp.pop(i)
Ответы (3 шт):
если надо удалить один элемент:
arr = ['test', 'pest', 'vest', 'pest']
if 'pest' in arr:
del arr[arr.index('pest')]
print(arr)
если все элементы:
arr = ['test', 'pest', 'vest', 'pest']
for i in range(len(arr) - 1, -1, -1):
if arr[i] == 'pest':
del arr[i]
print(arr)
ну условие "len(set(word))" – A4eVsmisle 2 минуты назад
for i in range(len(arr) - 1, -1, -1):
if len(set(arr[i])) > 4:
del arr[i]
Ну вот как-то так, наверное:
sp=['фываывап','фыфыфыфы','ываав','авыпрорппв','фывфывфыв']
for sp_item in sp:
if len(set(sp_item))>4:
sp.remove(sp_item)
Результат: ['фыфыфыфы', 'ываав', 'фывфывфыв']
Все слова, где больше 4 уникальных символов - удалены. Как просили.
P.S.
words="условие в том что-бы удалить все слова в которых больше 4 уникальных символа"
sp=words.split(' ')
for sp_item in sp[::-1]:
if len(set(sp_item))>4:
sp.remove(sp_item)
sp
Out[12]: ['в', 'том', 'все', 'в', '4']
И точно - никаких копий.
Ну ладно, раз можно всё по-новой, то вот:
words="условие в том что-бы удалить все слова в которых больше 4 уникальных символа"
sp=words.split()
for word in sp.copy():
if len(set(word)) > 4:
sp.remove(word)
print(sp)
Вывод:
['в', 'том', 'все', 'в', '4']
Пояснение: нельзя итерироваться по списку и удалять элементы из него же - некоторые элементы списка тогда могут быть пропущены. Но можно сделать копию и итерироваться по ней и тогда всё будет ок.
Ну либо нужно идти по индексу задом наперёд, как сделано в других ответах.