Удалить разные строковые элементы - PullRequest
0 голосов
/ 20 января 2020

У меня есть список строковых элементов, и я хотел бы удалить 3 значения: 'English', 'english' и 'French'.

Я пробовал следующий код, но операция не работает:

x = ['English','english','French','Dutch','Spanish','Japenese','Italian',]
list = np.random.choice(x,100)
y = [elem for elem in list if elem !='English' or elem !='english' or elem !='French'] 

Конечным результатом, который я хотел бы, будет список без строковых значений 'English' 'english' и 'French'.

Ответы [ 3 ]

2 голосов
/ 20 января 2020

Дано elem = 'English', elem !='English' or elem !='english' равно True, потому что хотя elem !='English' является ложным, elem !='english' является истинным. Вот так or работает.

1 голос
/ 20 января 2020

Вы хотите and, а не or.

>>> x = ['English', 'english', 'French', 'Dutch', 'Spanish', 'Japenese', 'Italian']
>>> [i for i in x if i != 'English' and i != 'english' and i != 'French']
['Dutch', 'Spanish', 'Japenese', 'Italian']

Тем не менее, вы можете сделать это проще с not in:

>>> [i for i in x if i not in ['English', 'english', 'French']]
['Dutch', 'Spanish', 'Japenese', 'Italian']
0 голосов
/ 20 января 2020

Вот вариант ... Просто

def remove(elm,lst):
    idxs = []
    for n,k in enumerate(lst):
        if(k == elm):
            idxs.append(n)
    for n,k in enumerate(idxs):
        del(lst[k-n])

x = ['English','english','French','Dutch','Spanish','Japenese','Italian',]
for k in ["english","English","French"]:
    remove(k,x)
print(x) # ['Dutch', 'Spanish', 'Japenese', 'Italian']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...